0

キーワードの長いリストと 1 つのデータ ファイルがあります。指定されたキーワードに従って、このデータ ファイルをフィルター処理したいと考えています。これを効率的に行うにはどうすればよいですか?毎回 1 つのキーワードを cat する for ループを使用し、データ ファイルでこのキーワードを grep できることはわかっています。

foreach keyword (`cat keywords`)
grep $keyword data_raw >> data_filtered
end

perl パイプラインも試しましたが、非常に効率が悪いようです。

cat keyword | perl -ne '$a = `grep "$_" data_raw`; print $a;' > data_filtered

この仕事を行うための効率的な1行の方法はありますか?

4

1 に答える 1

8

これに使用できますgrep -f

grep -f keywords data_raw

すべてのパターンがファイルから読み取られるようにしますkeywords

からman grep:

-f ファイル、 --file=ファイル

FILE からパターンを 1 行に 1 つずつ取得します。空のファイルにはパターンが含まれていないため、何にも一致しません。(-f は POSIX で指定されています。)

于 2013-11-04T16:17:30.567 に答える