Como remover uma sequência de caracteres depois e antes de um caractere específico?

1

Eu tenho um arquivo com milhares de linhas que começam com:

>Miriam132_38138    Otu32555|1

Eu preciso remover ' Miriam********* ' para que cada linha comece com:

>Otu32555|1

A primeira string de caracteres é sempre uma combinação da palavra 'Miriam' e um conjunto de 7, 8 ou 9 caracteres. Eu brinquei com sed sem muito sucesso.

    
por Marie Claire Arrieta 13.05.2015 / 07:12

5 respostas

1

Se você quiser remover a primeira "palavra" da linha, use algo como

awk '{print $2}' input.txt

supondo que você tenha espaço em branco entre "palavras"

    
por 13.05.2015 / 07:37
0

Assumindo que o conjunto de 7-9 caracteres termina com um espaço e que Miriam esteja na linha apenas uma vez:

sed 's/\(.*\)Miriam.* //' input.txt

A parte \(.*\) "salva" o padrão correspondido antes de Miriam e o coloca de volta com

    
por 13.05.2015 / 07:25
0
sed '/^Miriam/s/[^ ]* *//' <in >out

... fará. Ele irá remover de qualquer linha que abra com a string Miriam apenas a primeira seqüência de caracteres não espaciais seguida pela primeira string de caracteres de espaço. Ele não afetará qualquer linha que não abra com essa sequência e não removerá qualquer, exceto a primeira ocorrência da referida cadeia.

    
por 13.06.2015 / 17:53
0

Use isso,

awk '{print $2}' filename > outputfile  

Deveria definitivamente funcionar. Ele irá imprimir a segunda palavra de cada linha no arquivo e a saída será salva no arquivo chamado "outputfile"

    
por 13.06.2015 / 15:37
-1

Use awk :

awk '{print substr($0, index($0, $2))}' file

Remove apenas o primeiro campo, mas imprime todos os outros campos.

Ou sed :

sed 's/Miriam132_38138 \+//' file

Se o > no início da linha for preservado, isso remove apenas a primeira correspondência.

    
por 13.05.2015 / 07:57