Como substituir a linha com uma correspondência exata de uma string

0

Eu tenho um arquivo com este conteúdo: dskldfsd.com

domain

domain.com

sub.domain.com

domain.main.com

anythinghere

Desejo excluir a linha que contém a palavra domain . Usando o grep, este comando encontra a linha exata que eu quero:

grep -w '^domain$' test.txt

Mas eu quero excluir esta linha que contém domain como uma única palavra do começo ao fim da linha. Eu quero manter as linhas onde a palavra domain é apenas parte da string.

    
por user9371654 11.08.2018 / 16:40

4 respostas

1

Use sed:

sed -i -e '/^domain$/d' test.txt
    
por 11.08.2018 / 16:43
0

Que tal

grep -v '^domain$' test.txt
    
por 11.08.2018 / 17:40
0

Por que grep -v '^ domain $' Como por questão, seu simples grep -v 'domain', de acordo com o meu entendimento.

    
por 11.08.2018 / 19:22
0

Supondo que você gostaria de usar ferramentas padrão, você poderia fazer

grep -xF -v 'domain' test.txt >newtest.txt

A -x flag para grep força a correspondência a ficar em toda a linha, e -F torna grep tratar o padrão como uma string fixa, em vez de uma expressão regular. O -v inverte o sentido da correspondência para que, no final, você obtenha todas as linhas em test.txt , o que não é apenas a string domain . O resultado é escrito em newtest.txt .

    
por 12.08.2018 / 09:49