Linux 在一个文件中查找单词,并在另一个文件中找到它们所在的行:Bash脚本
我试图把一个文件中与另一个文件中的单词相对应的所有行grep掉,然后用这些行创建第三个新文件。 例如:Linux 在一个文件中查找单词,并在另一个文件中找到它们所在的行:Bash脚本,linux,bash,file,grep,Linux,Bash,File,Grep,我试图把一个文件中与另一个文件中的单词相对应的所有行grep掉,然后用这些行创建第三个新文件。 例如: File 1 rs2132k34hh rs234hk5kk4 rsklhh32432 File 2 Info more info otherstuff rs2132k34hh somethings Info more info otherstuff rs234hk5kk4 somethings Info more info otherstuff
File 1
rs2132k34hh
rs234hk5kk4
rsklhh32432
File 2
Info more info otherstuff rs2132k34hh somethings
Info more info otherstuff rs234hk5kk4 somethings
Info more info otherstuff rsklhh32432 somethings
Info more info otherstuff rs234hk5kk4 somethings
我认为这将是一个类似于
egrep -l "(\s(rs\S+))" /filethatIamsearching.txt > newfile.txt
grep文件中的rs并发送到新文件
但我知道这不是命令中应该包含的所有内容。
有人能给我指出正确的方向吗 试试看:
grep -wf file1 file2 > file3
您可以告诉grep
使用-f
选项从文件中读取模式。您还可以使用-w
选项仅搜索整个单词。尝试以下操作:
grep -F -f file1 file2 >newfile.txt
这似乎不起作用。它一直在运行,但没有向新文件添加任何内容。我让它运行了7到8分钟都没有用。对我来说很有效。不确定您的问题是什么。如果文件相当大,是否会有问题?这似乎可以正常工作。您介意解释一下您推荐的-F-F命令吗?
-F
从文件(file1)中读取模式,-F
将模式视为固定字符串man grep
将为您提供更多信息。如果file2
中有一行带有foors234hk5kk4
的代码,则此操作无效。它将被错误地匹配。这就是为什么你需要-w
只匹配单词。@dogbane grep对此不是100%安全的,你给出了一个解决方案,我总能找到例外。e、 键串不是在第4列,而是在第3列呢?返回您的-w
。如果文件1中有一行像*
,会发生什么情况?您可以看到-F
的必要性。或者-F和-w更好。:)