Como remover todas as linhas do arquivo de texto que contêm as palavras "gato" e "rato"?
command-line
text-processing
PersonX
fonte
fonte
Respostas:
grep
aproximaçãoPara criar uma cópia do arquivo sem linhas correspondentes a "gato" ou "rato", pode-se usar
grep
em reverse (-v
) e com a opção de palavra inteira (-w
).A opção de palavra inteira garante que não corresponda
cats
ou,grateful
por exemplo. O redirecionamento de saída do seu shell é usado (>
) para gravá-lo em um novo arquivo. Precisamos da-E
opção de ativar as expressões regulares estendidas para a(one|other)
sintaxe.sed
aproximaçãoComo alternativa, para remover as linhas no local, pode-se usar
sed -i
:Os
\b
limites conjuntos de palavras e ad
operação apaga a linha correspondente a expressão entre as barras.cat
erat
ambos estão sendo correspondidos pela(one|other)
sintaxe que aparentemente precisamos escapar com barras invertidas.Dica: use
sed
sem o-i
operador para testar a saída do comando antes de substituir o arquivo.(Baseado em Sed - exclua uma linha que contém uma sequência específica )
fonte
Para testar apenas no terminal, use:
Para realmente remover essas linhas do arquivo, use:
fonte
Experimente o vim-way:
fonte
Considere se você tem arquivo com
file_name
e você deseja procurar mouse, mas no mesmo tempo algumas linhas de rato tendo outras palavras, comocat
erat
e você não quer ver aqueles em sua saída, então a única maneira de fazer isso é -fonte
maneira shell portátil
Funciona em
/bin/sh
, que estádash
no Ubuntu, bem comoksh
, ebash
. Um pouco estranho que você precise escrever vários casos de teste para cada palavra nacase
declaração, mas portátil. Trabalha com casos em que a palavra aparece sozinha na linha, no início, no final da linha ou no meio da linha e ignora onde pode fazer parte de outra palavra.E é assim que funciona:
fonte