使用'grep -f'选项获取所有匹配项

时间:2017-03-24 08:59:31

标签: grep

我想找到所有我在一个文件('file1.txt')中使用grep选项在另一个文件('file2.txt')中找到的文本的匹配项-f,告诉读取从文件中找到的表达式。

'FILE1.TXT'

'FILE2.TXT'

当我运行命令时:

grep -f file1.txt file2.txt -w

我只获得一次'a'的输出。相反,我想得到它两次,因为它在我的'file1.txt'文件中出现两次。有没有办法让grep(或任何其他unix / linux)工具为它读取的每一行输出匹配? 提前致谢。 阿图罗

2 个答案:

答案 0 :(得分:0)

使用时

grep -f pattern.txt file.txt

这意味着匹配文件pattern.txtfile.txt中找到的模式。

它只给你一个输出,因为第二个文件中都有。

尝试交换文件,

grep -f file2.txt file1.txt -w

这会回答你的问题吗?

答案 1 :(得分:0)

Grep按设计工作,只提供一条输出线。 你可以使用另一种方法:

while IFS= read -r pattern; do
    grep -e $pattern file2.txt
done < file1.txt

这将使用file1.txt中的每一行作为grep的模式,从而产生您正在寻找的输出。