0

我正在研究外壳,我想编写一个衬垫,它将读取文件 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;
4

3 回答 3

1

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

于 2013-02-15T12:42:44.220 回答
0

您可以使用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
于 2013-02-15T11:37:46.390 回答
0

以下情况如何:它甚至会忽略空行和 # 注释:

读取文件时;如果 [[ "$FILE" != [/a-zA-Z0-9]* ]]; 继续;菲; grep -h 模式 "$FILE"; 完毕;

当心:没有编译这个。

于 2013-02-15T11:41:59.770 回答