[问题] 要如何用awk比较二个档案字段

楼主: xyzman (.........)   2017-12-25 16:19:15
我想用awk比较二个档案,其中的某个字段是否一致
二个档案的内容分别是
file1
============
abc 1234
bcd 3456
def 7890
file2
============
abc 1234
bcd 8888
def 7890
我想要filter的是把第一栏做为index,当file2的第二栏有变动时
要能够filter出来
bcd 8888
目前可以透过下面语法filter出来
awk 'NR==FNR{c[$2]++;next};c[$2] == 0' file2 file1
但如果是因为file1整笔纪录是没有的也会被filter
我想做的是当file1有bcd这栏,file2也有这笔纪录,且第二栏是不一致的情况下
才会被filter出来,请问一下用awk如何才能够达到?
ex:
file1
============
abc 1234
def 7890
file2
============
abc 1234
bcd 8888
def 7890
作者: hijkxyzuw (i,j,k) ×(x,y,z)   2017-12-25 16:21:00
直接 diff 不就好了?
楼主: xyzman (.........)   2017-12-25 17:59:00
自问自答:把二个档案用第一栏join,再用awk下if栏二不等于栏三就print出来,就是我要的结果了
作者: jimfan (jimfan)   2016-01-03 10:21:00
如果可以用join就简单多了:先join两个档案,使用指令:join file1 file2,输出:abc 1234 1234bcd 3456 8888def 7890 7890再用gawk挑第二、三栏不同,print:join file1 file2 | gawk '$2!=$3{print;}'

Links booklink

Contact Us: admin [ a t ] ucptt.com