我有一个主文件,我用它作为查找,我有搜索字符串是短语。
我目前的尝试是
for i in `cat list` #list contains the phrases that I'm looking for
do
grep $i master.file
done
然而,由于我的初始搜索项目(在这种情况下是$ i)是一个短语,我遇到了很多不匹配。例如,如果短语是“Blah for the”那么我会得到很多匹配,其中包含“the”或“for”但不是完整模式。从命令行我可以做到
grep "Blah for the" master.file
这给了我有意义的结果。 如何从脚本中获得相同的结果?
一种可能的解决方案是将我的短语和主文件中的空格分开。但这很难看。
任何帮助表示赞赏。 谢谢!
答案 0 :(得分:3)
grep
让-f
选项从文件中读取换行符分隔的模式:
grep -f list master.file
另请注意,如果要搜索固定字符串而不是正则表达式模式,还需要-F
选项:
grep -Ff list master.file
答案 1 :(得分:2)
有几种可能性。如果我理解正确,你想循环遍历行而不是文件中的单词。这里指出了两种可能的方法: https://unix.stackexchange.com/questions/7011/how-to-loop-over-the-lines-of-a-file
您可以使用IFS=$'\n'
将换行符设为唯一的分隔符,也可以使用相同的代码。链接答案中指出的另一种可能性是使用read
:
while IFS= read -r i; do
grep "$i" master.file
done < list