grep -f 生成意外的输出

grep -f 生成意外的输出

使用“grep -of file1.txt file2.txt”(下面的文件内容),我得到输出:

and
if
pineapple

为什么缺少“dif”和“for”?我必须使用其他开关吗?

文件1.txt

and
dif
for
if
apple
pineapple

文件2.txt

andiforpineapple

答案1

如果您想针对每个指定的模式重新搜索输入文件:

$ cat patterns.txt 
and
dif
for
if
apple
pineapple
$ cat source.txt 
andiforpineapple
$ while read; do grep -o -e"$REPLY" source.txt; done <patterns.txt
and
dif
for
if
apple
pineapple

但是,如果源文件有多行,输出行顺序会与你期望的不同。由于你没有说明要用这个做什么,我不知道这是否能解决你的实际问题。

答案2

就像这样:

andiforpineapple
  ^found and
   ^continuing search from i
    ^found if
     ^continuing search from o
       ^found pineapple

相关内容