Como sedar linhas que contêm apenas uma forma dada?

0

Esta é a entrada:

asdfZE3033141xycf
asdfINSFRHxycf

e eu preciso dessa saída:

asdfZE3033141

asdfINSFRHxycf

Então eu usei um:

echo -e 'asdfZE3033141xycf\nasdfINSFRHxycf' | sed '/asdfZE3033141xycf/ s=xycf$=\n='

mas eu preciso disso em GERAL. Então eu preciso sed cada:

asdfZE[0-9][0-9][0-9][0-9][0-9][0-9][0-9]xycf

linha em um arquivo de texto. Eu simplesmente não consigo colocar o "[0-9]" em sed. Como posso fazer isso?

    
por gasko peter 13.03.2013 / 13:06

3 respostas

1

Por que não modifique um pouco seu trabalho:

echo -e 'asdfZE3033141xycf\nasdfINSFRHxycf' | sed -e 's/^\(asdfZE[0-9]\{7\}\)xycf$/\n/'
    
por 13.03.2013 / 13:44
0

O que há de errado com "[0-9]"? Por que você não pode colocá-lo em sed?

O uso pode simplesmente usar

sed '/asdfZE[0-9][0-9][0-9][0-9][0-9][0-9][0-9]xycf/s=xycf$=\n=' file

ou até mesmo

sed '/asdfZE[0-9]\{7\}xycf/s=xycf$=\n=' file

sed regex de suporte no padrão de pesquisa.

    
por 13.03.2013 / 13:14
0

Não tem certeza do que você quer dizer.

E sobre:

sed 's/^\(asdfZE[0-9]\{7\}\)xycf$/\
/'

(barra invertida seguida por um caractere real de nova linha é a maneira padrão de inserir um caractere de nova linha no lado direito do comando s (em oposição a \n )).

    
por 13.03.2013 / 13:18

Tags