Bash使用存储在文件中的模式执行多个grep搜索

时间:2014-05-07 22:50:42

标签: bash unix search

使用Mac计算机附带的默认Unix环境。环境包含以下内容:

  • 1个文件,是我想用作搜索模式的~250个单词的列表
  • 使用这些搜索模式中的每一种单独搜索10个左右的.tsv文件
  • 要附加搜索结果的1个文件

我想运行以下脚本:

for file in *.tsv; 
do 
echo "Processing $file"; 
grep -n PATTERN $file | cut -f 1,2,3 >> Results_File.lst; 
done

但我不知道如何针对存储在单独文件中的多个模式重复运行脚本。

以下是模式文件的一小部分:

    AXDND1
    BAZ2B
    BBS10
    BRIP1
    etc

1 个答案:

答案 0 :(得分:1)

您不需要for循环。您可以将*.tsv glob传递给grep,它将搜索所有这些文件。如果您将选项-f pattern.txt传递给grep,则会搜索pattern.txt中的所有模式。

以下命令应该完成整个工作:

grep -n -f pattern.txt *.tsv | cut -f 1,2,3 >> Results_File.lst

检查man grep以获取grep及其选项的进一步说明。