
私は次のターミナル コマンドを使用して、非常に大きな 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
これにより、これらの文字列が含まれない行が出力されます。