Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在unix中从2个文件中查找匹配的记录_Unix_Sed_Awk - Fatal编程技术网

如何在unix中从2个文件中查找匹配的记录

如何在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,并将它们插入到一个文件中 请建议。我只

我有两个包含电子邮件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,并将它们插入到一个文件中

请建议。我只需要这两个文件之间的共同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