Por que não modifique um pouco seu trabalho:
echo -e 'asdfZE3033141xycf\nasdfINSFRHxycf' | sed -e 's/^\(asdfZE[0-9]\{7\}\)xycf$/\n/'
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?
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.
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
)).
Tags bash