使用 grep 或其他工具,使用另一个文件中同一行上的两个字符串来搜索一个文件

使用 grep 或其他工具,使用另一个文件中同一行上的两个字符串来搜索一个文件

我正在尝试通过文件来 grep 字符串。问题是,grep 无法很好地处理包含多个字符串(我知道的)的行,我想单独 grep 这些字符串。Grep 可能不是最简单的解决方案,但它是我所知道的,所以我正在使用它。简而言之,我有两个文件正在使用。我要搜索的第一个文件(file2.txt)设置如下:

a c  
d  
f  
g  
b h  
h  

我用作搜索参数的第二个文件(file1.txt)如下:

a b

当我使用 grep 搜索时没有得到任何返回结果:

grep -f file1.txt file2.txt

但是我希望返回这些行,因为在 file2 中发现了“a”和“b”:

a c
b h

答案1

可能最简单的事情就是转换file1.txt为换行符分隔的流,然后grep -f通过 stdin 传递它:

$ tr -s '[:blank:]' '\n' < file1.txt | grep -Ff- file2.txt
a c
b h

相关内容