Я успешно использую следующую команду терминала для поиска определенного текста в моем очень большом CSV-файле и создания отдельного CSV-файла в качестве выходных данных:
grep "text" filename.csv > outputfile.csv
Можно ли использовать похожую команду для поиска нескольких разных текстов и сохранения результатов в одном выходном файле?
решение1
Вы можете выполнить поиск по нескольким шаблонам с помощью -e
:
grep -e text1 -e text2 filename.csv > outputfile.csv
Протестировано с реализациями GNU grep, FreeBSD grep и busybox grep, также указанными в
POSIX. Вот как это -e
объясняется в справочной странице 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 "-".
решение2
В принципе, вы можете использовать альтернативу в стиле «ИЛИ» в вашем регулярном выражении:
grep "text1\|text2" filename.csv > outputfile.csv
или
grep -E "text1|text2" filename.csv > outputfile.csv
Доступный синтаксис будет зависеть от того, какая версия у grep
вас установлена (вышеприведенный синтаксис определенно работает в GNU grep).
решение3
Если вы хотите искать разные строки, вы можете использовать egrep
или grep -E
:
egrep "text|string|word|" filename.csv > outputfile.csv
grep -E "seal|walrus|otter" filename.csv > outputfile.csv
Они выведут строки, содержащие любые из этих строк. Вы также можете объединить их с другими опциями, такими как:
egrep -v "text|string|word|" filename.csv > outputfile.csv
Это выведет строки, не содержащие ни одной из этих строк.