Perl 比较两个不同文件中的非连续字段
我有一个文件_1.txt,里面有以下数据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的
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,这太棒了,适合我的解决方案。