Терминал - запрос GREP для Macbook

Терминал - запрос GREP для Macbook

Я успешно использую следующую команду терминала для поиска определенного текста в моем очень большом 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

Это выведет строки, не содержащие ни одной из этих строк.

Связанный контент