【发布时间】:2023-04-04 06:52:01
【问题描述】:
我有一长串关键字和一个数据文件。我想根据提供的关键字过滤这个数据文件。我怎样才能有效地做到这一点?我知道我可以使用一个 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
有没有一种高效的单线方式来完成这项工作?
【问题讨论】:
-
输出的顺序重要吗?最有效的解决方案是同时查找所有关键字(到目前为止,两个答案都是这样做的),而您的输出将按输入文件中的单词排序,如果一行匹配多个关键字,则包含重复项。如果这就是您真正想要的东西,您可能需要进行编辑以阐明您的要求。