
Estou usando com sucesso o seguinte comando de terminal para encontrar texto específico em meu arquivo csv muito grande e criando um arquivo csv separado como saída:
grep "text" filename.csv > outputfile.csv
Existe alguma maneira de usar um comando semelhante para pesquisar vários textos diferentes e salvá-los no mesmo arquivo de saída?
Responder1
Você pode pesquisar vários padrões com -e
:
grep -e text1 -e text2 filename.csv > outputfile.csv
Testado com implementações GNU grep, FreeBSD grep e busybox grep, também especificadas em
POSIX. É assim que -e
é explicado na página de manual do GNU grep:
-e PATTERN, --regexp=PATTERN
Use PATTERN as the pattern. If this option is used
multiple times or is combined with the -f (--file)
option, search for all patterns given. This option can
be used to protect a pattern beginning with "-".
Responder2
Em princípio, você poderia usar uma alternativa no estilo "OR" em sua expressão regular:
grep "text1\|text2" filename.csv > outputfile.csv
ou
grep -E "text1|text2" filename.csv > outputfile.csv
A sintaxe disponível dependerá um pouco de qual versão grep
você instalou (o acima definitivamente funciona no GNU grep).
Responder3
Se quiser pesquisar strings diferentes, você pode usar egrep
ou grep -E
:
egrep "text|string|word|" filename.csv > outputfile.csv
grep -E "seal|walrus|otter" filename.csv > outputfile.csv
Eles imprimirão linhas contendo qualquer uma dessas strings. Você também pode combiná-los com outras opções, como:
egrep -v "text|string|word|" filename.csv > outputfile.csv
Isso imprimirá linhas que não contêm nenhuma dessas strings.