Usando sed para excluir uma linha inteira se ela contiver apenas um número específico

8

Eu tenho um arquivo txt

123
456
789
456
123456

Eu quero excluir caracteres específicos do arquivo, por exemplo, (123). Eu tentei com

$ sed -i '/123/d' dummy.sh
$ vi dumm.txt
456
789
456

No comando abaixo, quando executo as duas palavras ( 123 e 123456 ) estão sendo excluídas, mas preciso excluir apenas 123 do arquivo

$ sed -i 's/123//g' dummy.sh
$ vi dumm.txt
456
789
456
456

quando executo o comando abaixo, o 123 está sendo substituído por nulo.

Alguém pode dizer como excluir uma linha inteira se ela contiver apenas um número específico?

    
por Rak kundra 23.07.2017 / 20:25

1 resposta

17

Não está claro se você está tentando excluir toda a linha com 123 ou substituí-la por linha vazia. De qualquer forma, basta adicionar âncoras de início ^ e final $ da linha ao seu padrão:

sed -i '/^123$/d' dummy.sh      #delete whole line
sed -i 's/^123$//' dummy.sh     #replace with empty line
    
por 23.07.2017 / 20:38