0

我有一长串关键字和一个数据文件。我想根据提供的关键字过滤这个数据文件。我怎样才能有效地做到这一点?我知道我可以使用一个 for 循环,每次使用一个关键字,然后在数据文件中 grep 这个关键字。

foreach keyword (`cat keywords`)
grep $keyword data_raw >> data_filtered
end

我也试过perl管道,但似乎效率很低。

cat keyword | perl -ne '$a = `grep "$_" data_raw`; print $a;' > data_filtered

有没有有效的单线方式来完成这项工作?

4

1 回答 1

8

您可以grep -f为此使用:

grep -f keywords data_raw

这样所有模式都将从文件中读取keywords

来自man grep

-f 文件,--文件=文件

从 FILE 中获取模式,每行一个。空文件包含零个模式,因此不匹配任何内容。(-f 由 POSIX 指定。)

于 2013-11-04T16:17:30.567 回答