我有两个数据文件1.txt和2.txt
1.txt包含有效行。
例如。
1 2 1 2
1 3 1 3
在2.txt中我有一个额外的颜色,但如果你忽略它,我有一些有效的行,并且几行无效。在2.txt
中可能会出现多次相同的行例如:
1 2 1 2 1.9
1 3 1 3 3.4
1 3 1 3 3.4
2 3 2 3 5.6
2 3 2 3 5.6
第二行和第三行相同且有效。
第四行和第五行也相同但无效。
我想编写一个shell脚本来比较这两个文件并输出两个文件,valid.txt和invalid.txt看起来像这样...
valid.txt:
1 2 1 2 1
1 3 1 3 2
和invalid.txt:
2 3 2 3 2
valid.txt和invalid.txt的最后一个额外列包含该行在2.txt中重复的次数。
答案 0 :(得分:1)
这个awk脚本适用于示例数据:
awk 'NR==FNR{sub(/ *$/,"");a[$0]++;next}
{sub(/ [^ ]*$/,"")
if($0 in a)
v[$0]++
else
n[$0]++
}
END{
for(x in v)print x,v[x] > "valid.txt"
for(x in n) print x,n[x] >"inv.txt"
}' file1 file2
输出:
kent$ head inv.txt valid.txt
==> inv.txt <==
2 3 2 3 2
==> valid.txt <==
1 3 1 3 2
1 2 1 2 1