将grep用于整个文件

时间:2015-03-11 09:18:42

标签: bash grep

我有一个包含250行的列表。我必须通过Web服务器运行所有这些以获取输出列表。然而,这个列表会返回比我感兴趣的更多行。比如说,我的list.txt是:

a.1
b.1
etc

然后输出是output.txt:

a.1 a b c
a.2 b a b
a.3 d k o
b.1 b o p
b.2 o i y
b.3 p i y
etc

是否可以使用grep命令搜索list.txtoutput.txt中的所有字词,然后生成"想要的"列出wanted.txt

我需要output.txt

中的整行

我在AskUnuntu上问了这个问题,但是他们已经把我送到了这里。我被建议这个命令

$ grep -wFf list.txt output.txt

但我提示grep: out of memory

对于像我这样的初学者,是否有一种简洁的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

这个单行读取list.txt中的每一行,并在output.txt中为它添加greps(假设您只想匹配行开头的行,并且只有它是其中的一个词)自己的):

while read word ; do grep -w "^$word" output.txt ; done < list.txt > wanted.txt

使用提供的示例输入加上以下行

a.1bar
fooa.1
foo a.1 bar

wanted.txt包含:

a.1 a b c
b.1 b o p

请注意,此解决方案不如使用grep -f优雅,但可能会解决您的特定内存问题(未经测试)。