Usando sed e column :
$ sed -E 's/ intron_([^:]*):[^[:space:]]*/ /' file | column -t
id target_id length eff_length
1 FBgn0000721 1136 243.944268
1 FBgn0000721 1122 240.237419
2 FBgn0264373 56 0
A parte principal disso é o comando substituto:
s/ intron_([^:]*):\S*/ /
Ele procura intron_ e salva tudo depois de intron_ e antes dos primeiros dois pontos na variável 1 . [^[:space:]]* corresponde tudo, desde o cólon até o final do campo. Tudo isso é substituído pelo texto salvo na variável 1 .
Usando awk com saída separada por tabulação:
$ awk -v "OFS=\t" '{$2=$2;sub(/intron_/, "", $2); sub(/:.*/, "", $2); print}' file
id target_id length eff_length
1 FBgn0000721 1136 243.944268
1 FBgn0000721 1122 240.237419
2 FBgn0264373 56 0
Explicação:
-
-v "OFS=\t"Isso define o separador de campo de saída como uma guia. Isso ajuda a alinhar as colunas, possivelmente tornando
columndesnecessário. -
$2=$2Ao imprimir uma linha,
awknão será alterado para nosso separador de campos de saída recém-especificado, a menos que alteremos algo na linha. Atribuir o segundo campo ao segundo campo é suficiente para garantir que a saída tenha tabulações. -
sub(/intron_/, "", $2)Isso remove
intron_do segundo campo. -
sub(/:.*/, "", $2)Isso remove tudo após os dois primeiros pontos do segundo campo.
-
printIsso imprime nossa nova linha.
Usando awk com formatação de coluna personalizada
É como o acima, mas usa printf para que possamos formatar as larguras e alinhamentos de colunas como desejar:
$ awk '{sub(/intron_/, "", $2); sub(/:.*/, "", $2); printf "%-3s %-12s %8s %3s\n",$1,$2,$3,$4}' file
id target_id length eff_length
1 FBgn0000721 1136 243.944268
1 FBgn0000721 1122 240.237419
2 FBgn0264373 56 0
Aqui, a instrução printf "%-3s %-12s %8s %3s\n",$1,$2,$3,$4 seleciona as larguras e alinhamentos da coluna no estilo usual printf .
Usando sed e convertendo de separado por tabulação para separado por vírgula
$ sed -E 's/ intron_([^:]*):[^[:space:]]*/ /; s/[[:space:]][[:space:]]*/,/g' file
id,target_id,length,eff_length
1,FBgn0000721,1136,243.944268
1,FBgn0000721,1122,240.237419
2,FBgn0264373,56,0