ターミナル - Macbook GREPクエリ

ターミナル - Macbook GREPクエリ

次のターミナルコマンドを使用して、非常に大きな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-eGNU 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

原則として、正規表現では「OR」スタイルの代替を使用できます。

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

これにより、これらの文字列が1つも含まれていない行が印刷されます。

関連情報