Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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
Perl 比较两个不同文件中的非连续字段_Perl_Awk_Sed_Compare_Match - Fatal编程技术网

Perl 比较两个不同文件中的非连续字段

Perl 比较两个不同文件中的非连续字段,perl,awk,sed,compare,match,Perl,Awk,Sed,Compare,Match,我有一个文件_1.txt,里面有以下数据 1234 2567 2015-10-30,1234,zxcfgdk,kyfz 2015-10-30,2567,askjfkj,aaaa 2015-10-30,8888,bsjfjah,iojk 第二个文件_2.txt包含以下数据 1234 2567 2015-10-30,1234,zxcfgdk,kyfz 2015-10-30,2567,askjfkj,aaaa 2015-10-30,8888,bsjfjah,iojk 我想比较文件_1.txt的

我有一个文件_1.txt,里面有以下数据

1234
2567
2015-10-30,1234,zxcfgdk,kyfz
2015-10-30,2567,askjfkj,aaaa
2015-10-30,8888,bsjfjah,iojk
第二个文件_2.txt包含以下数据

1234
2567
2015-10-30,1234,zxcfgdk,kyfz
2015-10-30,2567,askjfkj,aaaa
2015-10-30,8888,bsjfjah,iojk
我想比较文件_1.txt的数据和文件_2.txt的第2列数据。如果匹配,则将文件_2.txt的整行重定向到单独的文件。和与文件不匹配的一个

谷歌搜索了很多页面。但是没有任何帮助

谢谢

使用
awk

$ cat s.awk
BEGIN { FS="," }
NR==FNR { a[$1]; next }
$2 in a { print > "matched.txt" }
!($2 in a) { print > "missing.txt" }

$ awk -f s.awk f1 f2

$ cat missing.txt
2015-10-30,8888,bsjfjah,iojk

$ cat matched.txt
2015-10-30,1234,zxcfgdk,kyfz
2015-10-30,2567,askjfkj,aaaa
使用
grep

另一种可能是简单地使用grep,但您需要确保file1中的值永远不会出现在field2之外的file2中(以单词分隔):

$ grep -w -f f1 f2
2015-10-30,1234,zxcfgdk,kyfz
2015-10-30,2567,askjfkj,aaaa

$ grep -v -w -f f1 f2
2015-10-30,8888,bsjfjah,iojk

感谢jas为您提供的解决方案。还有其他简单的方法吗?谢谢Jas,这太棒了,适合我的解决方案。