我正在开发shell,我想写一个内容,它将读取文件 A 的文件内容,并在文件 B 上执行grep
命令。
dataFile.log ,其值为
abc
xyz
...
依此类推
现在阅读 searchFile.log 上的abc和grep,例如grep abc searchFile.log
我有相同的shell脚本,但想要一个衬垫
for i in "cat dataFile.log" do grep $i searchFile.log done;
答案 0 :(得分:1)
试试这个:
grep -f dataFile.log searchFile.log
请注意,如果要将grep作为固定字符串,则需要-F
,如果要将dataFile.log中的文本与正则表达式匹配,请使用-E
或-P
答案 1 :(得分:0)
您可以使用grep -f
选项:
cat dataFile.log | grep -f searchFile.log
修改强>
好的,现在我明白了这个问题。您想要使用dataFile.log
中的每一行到searchFile.log
中的grep。我还看到您有value1|value2|...
,因此您需要grep
代替egrep
。
试试这个:
for i in `cat dataFile.log`
do
egrep "$i" searchFile.log
done
修改2
遵循chepner建议:
egrep -f dataFile.log searchFile.log
答案 2 :(得分:0)
以下内容:它甚至忽略空白行和#comments:
while read FILE; do if [[ "$FILE" != [/a-zA-Z0-9]* ]]; do continue; fi; grep -h pattern "$FILE"; done;
注意:没有编译过这个。