作者:相见亦无语 | 来源:互联网 | 2023-09-18 16:36
grep
本身能够做到。只需使用标志-f
:
grep -f
是每行包含一个模式的文件;并且
是要在其中进行搜索的东西文件。
请注意grep
,即使每行的内容看起来像一个正则表达式,也要强制将每行视为一个模式,您应该使用flag -F, --fixed-strings
。
grep -F -f
如您所说,如果文件是CSV,则可以执行以下操作:
grep -f <(tr ',' '\n'
例如,考虑文件“ a.txt”,其中包含以下几行:
alpha
0891234
beta
现在,文件“ b.txt”包含以下行:
Alpha
0808080
0891234
beta
以下命令的输出是:
grep -f "a.txt" "b.txt"
0891234
您根本不需要在for
这里循环;grep
本身提供此功能。
现在使用您的文件名:
#!/bin/bash
patterns="/home/nimish/contents.txt"
search="/home/nimish/another_file.csv"
grep -f <(tr ',' '\n' <"${patterns}") "${search}"
您可以更改','
为文件中的分隔符。