Exclui o terceiro caractere da linha usando sed

1

A seguinte sintaxe de sed exclui o primeiro caractere @ se ele existir em uma string:

 sed 's/^@\(.*\)//'

Mas como alterá-lo para excluir o caractere @ somente se estiver na posição terceiro ? Por exemplo, eu precisaria excluí-lo na seguinte linha:

 AB@CDEF

Eu preciso do script para verificar se o terceiro caractere é @ e, em caso afirmativo, excluí-lo da linha.

    
por yael 28.06.2010 / 09:08

3 respostas

2

Você pode usar

sed 's/^\(..\)@\(.*\)//'
    
por 28.06.2010 / 09:11
1

Para generalizar para qualquer personagem em qualquer posição, n :

sed 's/^\(.\{2\}\).//'

que exclui o terceiro caractere. Basta alterar o número "2" para n-1 .

Você pode usar uma variável como esta:

n=2
echo "$line" | sed "s/^\(.\{${n}\}\).//"
    
por 28.06.2010 / 13:36
0
% sed -e '/^..@/ { s,^\(..\)@,, }'

significa:

  • se a linha começar com 3 caracteres, o terceiro é um '@'
  • jogue fora o @, mas mantenha os primeiros caracteres
por 28.06.2010 / 09:12

Tags