我有两个包含 80,000 多条长度相同的记录的大文件。我需要按文件的前 8 个字符逐行比较两个文件。文件一的第一行将与文件二的第一行进行比较。文件一的第二行将与文件二的第二行进行比较。
样本文件1
01234567blah blah1
11234567blah blah2
21234567blah blah3
31234567blah blah4
样本文件2
31234567blah nomatch
11234567matchme2
21234567matchme3
31234567matchme4
第 2 - 4 行应该匹配,但第 1 行不应该匹配。我的脚本匹配第 1 行到第 4 行,但应该仅与第 1 行进行比较。
awk '
FNR==NR {
a[substr($0,1,8)]=1;next
}
{if (a[substr($0,1,8)])print $0; else print "Not Found", $0;}
' $inputfile1 $inputfile2 > $outputfile1
谢谢。
对于逐行比较,您需要使用FNR
变量作为键。尝试:
awk 'NR==FNR{a[FNR]=substr($1,1,8);next}{print (a[FNR]==substr($1,1,8)?$0:"Not Found")}' file1 file2
Not Found
11234567matchme2
21234567matchme3
31234567matchme4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)