Linux 在一个文件中查找单词,并在另一个文件中找到它们所在的行:Bash脚本

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

我试图把一个文件中与另一个文件中的单词相对应的所有行grep掉,然后用这些行创建第三个新文件。 例如:

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更好。:)