次のターミナルコマンドを使用して、非常に大きな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
原則として、正規表現では「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つも含まれていない行が印刷されます。