对整个文件使用 grep

Using grep for an entire file

我有一个包含 250 行的列表。我必须 运行 所有这些都通过网络服务器来获得输出列表。然而,这个列表 returns 比我感兴趣的多了很多行。比如说,我的 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

是否可以在output.txt中使用grep命令搜索list.txt中的所有单词,然后生成"the wanted"列表wanted.txt

我需要整行 output.txt

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

$ grep -wFf list.txt output.txt

但系统提示我 grep: out of memory

对于像我这样的初学者,有没有简单的方法可以做到这一点?

这个单行代码读取 list.txt 中的每一行并在 output.txt 中查找它(假设你只想匹配开头有单词的行,并且只有当它是一个单词时自己的):

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 优雅,但可能会解决您的特定内存问题(未经测试)。