我有一个包含该月每日 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 文件,如果在整行中$0
看到这些模式之一,$0 ~ x
则将该行打印到与模式匹配的名称相同的单个文件中。
只需传递您的实际搜索模式列表文件并使用inptrns_list
输入 .csv 文件。infiles*.csv
ptrns_list infiles*.csv