我怎么能在循环中grep?

时间:2013-08-16 12:51:17

标签: linux perl bash shell grep

我有一个包含单独行文字的文件。

text1
text2
text3
textN

我有一个包含许多文件的目录。我想grep这个特定目录中的每一行。有什么简单的方法可以做到这一点?

2 个答案:

答案 0 :(得分:11)

无需循环,您可以使用grep-f选项从文件中获取模式:

grep -f pattern_file files*

来自man grep

  

-f FILE, - file = FILE

     

从FILE获取模式,每行一个。空文件包含零   模式,因此没有匹配。 (-f由POSIX指定。)

测试

$ cat a1
hello
how are you?

$ cat a2
bye
hello

$ cat pattern
hello
bye

$ grep -f pattern a*
a1:hello
a2:bye
a2:hello

答案 1 :(得分:2)

您也可以使用标准的bash循环:

for i in text*; do grep "pattern" $i; done

甚至没有循环的更好选择:

grep "pattern" text*

如果在*之后按Tab键,则shell会将其扩展为满足条件的文件。