我有很多关键字和一个数据文件.我想根据提供的关键字过滤此数据文件.我怎样才能有效地做到这一点?我知道我可以使用for循环,每次使用一个关键字,并在数据文件中grep这个关键字.
foreach keyword (`cat keywords`)
grep $keyword data_raw >> data_filtered
end
Run Code Online (Sandbox Code Playgroud)
我也尝试过perl管道,但看起来效率很低.
cat keyword | perl -ne '$a = `grep "$_" data_raw`; print $a;' > data_filtered
Run Code Online (Sandbox Code Playgroud)
有没有有效的单行方式来完成这项工作?
你可以使用grep -f这个:
grep -f keywords data_raw
Run Code Online (Sandbox Code Playgroud)
这样就可以从文件中读取所有模式keywords.
来自man grep:
-f FILE, - file = FILE
从FILE获取模式,每行一个.空文件包含零模式,因此不匹配任何内容.(-f由POSIX指定.)