
私はその月の毎日のCDを含むディレクトリを持っています。すべてのCDからph値のリストを検索し、その結果をモード別に別々のファイルに書き込む必要があります。
現在、私は毎月のCDを含むディレクトリの各ph値に対して次のコマンドを手動で使用しており、各数値の結果を単一のファイルに書き込んでいます。
grep -rn 111222333 /dir-containing-new-indivdual-logs/111222333.csv
検索リストを指定するオプションを追加してみましたが、コマンド全体grep -f
の構文が正しくないため、成功しませんでした。
答え1
grepを引き続き使用する場合は、このループを検討してください。
nums=/path/to/the/file_with_numbers_one_per_line
wdir=/path/to/dir/where/records2searchIn/located
rdir=/path/to/dir/to/put/results
for anum in $(cat ${nums}); do
grep -nr "${anum}" ${wdir} > ${rdir}/result_file_for_${anum};
done
リスト内の各番号をgrepし、単一の結果を保存します。
答え2
これに使用されますawk
。
awk 'NR==FNR{ptrns[$0]++;next}
FILENAME!="ptrns_list"{for(x in ptrns) if($0 ~ x) print $0>x}' ptrns_list infiles*.csv
まず、すべてのパターンを配列として読み込みます。ポインタリスト文書。その後、各 .csv ファイルに対して、これらのパターンの 1 つが行全体に$0
表示されたら、$0 ~ x
その行をパターン一致と同じ名前の単一ファイルとして印刷します。
実際の検索パターンリストファイルを渡してptrns_list
入力.csvファイルに使用します。infiles*.csv
ptrns_list infiles*.csv