如何在unix中从2个文件中查找匹配的记录
我有两个包含电子邮件ID的文件。 1.Test1.txt 2.Test2.txt Test1.txt的内容包括:如何在unix中从2个文件中查找匹配的记录,unix,sed,awk,Unix,Sed,Awk,我有两个包含电子邮件ID的文件。 1.Test1.txt 2.Test2.txt Test1.txt的内容包括: abc@gmail.com xyz@gmail.com mns@gmail.com Test2.txt的内容包括: jpg@gmail.com joy@yahoo.com abc@gmail.com pet@yahoo.com 这里abc@gmail.com是Test1.txt和Test2.txt之间的公共id。我想从这两个文件中找出这样的Id,并将它们插入到一个文件中 请建议。我只
abc@gmail.com
xyz@gmail.com
mns@gmail.com
Test2.txt的内容包括:
jpg@gmail.com
joy@yahoo.com
abc@gmail.com
pet@yahoo.com
这里abc@gmail.com是Test1.txt和Test2.txt之间的公共id。我想从这两个文件中找出这样的Id,并将它们插入到一个文件中
请建议。我只需要这两个文件之间的共同ID 试试看:
awk 'NR==FNR{A[$1]; next} $1 in A' file1 file2 > file.new
--编辑:添加解释--
您也可以使用
grep
执行此操作:
grep -Fwf Test1.txt Test2.txt
是的,这也有效,但它对假间距更敏感。如果你在前面放一个空格'abc@gmail.com例如,在第一个文件中(就像示例文件中的情况),它将找不到匹配项(反之亦然)。@Scruminizer Yep这是真的<代码>:)你能解释一下你的awk声明吗?这对我来说并不那么明显:-)
grep -Fwf Test1.txt Test2.txt
$ head t*
==> t1 <==
abc@gmail.com
xyz@gmail.com
mns@gmail.com
==> t2 <==
jpg@gmail.com
joy@yahoo.com
abc@gmail.com
pet@yahoo.com
$ grep -Fwf t1 t2
abc@gmail.com