Como apagar um padrão específico de uma string usando awk ou perl?

1

Como excluir somente [gene=xyzI] padrão se eu tiver várias entradas como esta:

>lcl|NZ_CP018664.1_gene_628 [gene=mscL] [locus_tag=AUO97_RS03160] [location=complement(694895..695326)]

Eu quero que minha saída seja:

>lcl|NZ_CP018664.1_gene_628 [locus_tag=AUO97_RS03160] [location=complement(694895..695326)]

    
por Tina Sharma 28.12.2017 / 08:23

2 respostas

0

Para substituição simples - sed seria suficiente:

sed -E 's/\[gene=[a-z]{3}[A-Z]\] *//' file

A saída:

>lcl|NZ_CP018664.1_gene_628 [locus_tag=AUO97_RS03160] [location=complement(694895..695326)]

Para modificar o arquivo "inplace" - adicione -i option: sed -i ....

    
por 28.12.2017 / 08:37
0

com GNU awk :

$ echo '>lcl|NZ_CP018664.1_gene_628 [gene=mscL] [locus_tag=AUO97_RS03160] [location=complement(694895..695326)]'  | awk '{$0=gensub(/\s*\S+/,"",2)}1'
>lcl|NZ_CP018664.1_gene_628 [locus_tag=AUO97_RS03160] [location=complement(694895..695326)]

Isso também pode ser feito com cut :

$ echo '>lcl|NZ_CP018664.1_gene_628 [gene=mscL] [locus_tag=AUO97_RS03160] [location=complement(694895..695326)]'  | cut -d' ' -f1,3-
>lcl|NZ_CP018664.1_gene_628 [locus_tag=AUO97_RS03160] [location=complement(694895..695326)]
    
por 28.12.2017 / 08:39

Tags