我正在研究外壳,我想编写一个衬垫,它将读取文件 A 的文件内容并在文件B上执行grep
命令。
例如,假设有两个文件
dataFile.log 具有以下值
abc
xyz
...
等等
现在在searchFile.log上阅读 abc 和 grepgrep abc searchFile.log
我有相同的 shell 脚本,但想要一个衬里
for i in "cat dataFile.log" do grep $i searchFile.log done;
我正在研究外壳,我想编写一个衬垫,它将读取文件 A 的文件内容并在文件B上执行grep
命令。
例如,假设有两个文件
dataFile.log 具有以下值
abc
xyz
...
等等
现在在searchFile.log上阅读 abc 和 grepgrep abc searchFile.log
我有相同的 shell 脚本,但想要一个衬里
for i in "cat dataFile.log" do grep $i searchFile.log done;
try this:
grep -f dataFile.log searchFile.log
Note that if you want to grep as fixed string, you need -F
, if you want to match the text in dataFile.log as regex, use -E
or -P
您可以使用grep -f
选项:
cat dataFile.log | grep -f searchFile.log
编辑
好的,现在我明白了这个问题。您想使用从dataFile.log
到 grep in 的每一行searchFile.log
。我也看到你有value1|value2|...
,所以代替grep
你需要egrep
。
试试这个:
for i in `cat dataFile.log`
do
egrep "$i" searchFile.log
done
编辑 2
遵循 chepner 的建议:
egrep -f dataFile.log searchFile.log
以下情况如何:它甚至会忽略空行和 # 注释:
读取文件时;如果 [[ "$FILE" != [/a-zA-Z0-9]* ]]; 继续;菲; grep -h 模式 "$FILE"; 完毕;
当心:没有编译这个。