
Estoy usando con éxito el siguiente comando de terminal para buscar texto específico en mi archivo csv muy grande y creando un archivo csv separado como salida:
grep "text" filename.csv > outputfile.csv
¿Hay alguna forma de utilizar un comando similar para buscar varios textos diferentes y guardarlos en el mismo archivo de salida?
Respuesta1
Puede buscar múltiples patrones con -e
:
grep -e text1 -e text2 filename.csv > outputfile.csv
Probado con implementaciones GNU grep, FreeBSD grep y togetherbox grep, también especificadas en
POSIX. Así es como -e
se explica en la página de manual de 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 "-".
Respuesta2
En principio, podrías utilizar una alternativa de estilo "O" en tu expresión regular:
grep "text1\|text2" filename.csv > outputfile.csv
o
grep -E "text1|text2" filename.csv > outputfile.csv
La sintaxis disponible dependerá en cierta medida de la versión que grep
haya instalado (lo anterior definitivamente funciona en GNU grep).
Respuesta3
Si desea buscar diferentes cadenas, puede utilizar egrep
o grep -E
:
egrep "text|string|word|" filename.csv > outputfile.csv
grep -E "seal|walrus|otter" filename.csv > outputfile.csv
Esos imprimirán líneas que contengan cualquiera de esas cadenas. También puedes combinarlos con otras opciones como:
egrep -v "text|string|word|" filename.csv > outputfile.csv
Eso imprimirá líneas que no contienen ninguna de esas cadenas.