Livrando-se de traços em um arquivo com sed

-1

Eu gostaria de usar o comando sed para me livrar de alguns traços em uma string (dentro de um arquivo), ou seja, o arquivo tem uma linha que diz:

TEXT=abcdef-lalala-someText-yahoo

Após a execução do sed, essa linha deve se parecer com:

TEXT=abcdeflalalasomeTextyahoo

Obrigado antecipadamente

    
por Wilmer 11.03.2012 / 19:06

3 respostas

1

Com base no seu comentário à resposta do Nifle , talvez seja mais parecido com o que você está procurando. Ele só atua em linhas que contêm TEXT= seguido por 4 '-' segmentos de texto delimitados.

Usando o GNU sed (tratando "TEXT" e "yahoo" como constantes)

sed -re 's/^(TEXT=[^-]+)-([^-]+)-([^-]+)-(yahoo)$//'

Ou, usando o GNU sed (tratando todo o texto depois de "=" como vairable)

sed -re 's/^(TEXT=[^-]+)-([^-]+)-([^-]+)-([^-]+)$//'

Ou, para portabilidade posix (tratar todo o texto depois de "=" como vairable):

sed 's/^\(TEXT=[^-][^-]*\)-\([^-][^-]*\)-\([^-][^-]*\)-\([^-][^-]*\)$//'
    
por 12.03.2012 / 03:47
3

Aqui você vai:

echo "TEXT=abcdef-lalala-someText-yahoo" | sed 's/-//g'
TEXT=abcdeflalalasomeTextyahoo
    
por 11.03.2012 / 19:49
0

Aqui estão meus dois centavos ... Você pode adicionar a correspondência (TEXT =) antes do comando substituto ... Assim:

sed '/TEXT=/s/-//g'

Os resultados serão:

echo "TEXT=abcdef-lalala-someText-yahoo" | sed '/TEXT=/s/-//g'
TEXT=abcdeflalalasomeTextyahoo

O comando substituto só será executado quando corresponder à primeira cláusula, neste caso, corresponder a "TEXT=". Eu acho que o comando será mais simples e elegante.

    
por 02.03.2018 / 15:39

Tags