请考虑以下文件:
文件一:
boo,194,2322
foo,999,7559
文件2:
boo,2322
boo,4526
foo,4222
foo,4223
我需要Field1
链接文件1之Field1
内文件2Field2
并从中获取相关信息文件2,同时排除结果(如果它等于Field3
in)文件1。
结果应该是:
boo,4526
foo,4222,4223
我尝试了下面的脚本,但它不排除类似的值。
awk -F, 'NF==3{arr[$1]=$3}{if(arr[$1]==$1){print $2}}'
答案1
您需要检查是否$1
在arr
,如果是,则该值是否与不同$2
,然后打印:
awk -F, 'FNR == NR { arr[$1] = $3; next }
{ if ($1 in arr && arr[$1] != $2) print $2 }'
使用FNR == NR
andnext
是处理第一个文件中的行与其他文件中的行不同的传统方法。是的,您可以将其平铺到一行,但“一行”是一个贬义词,除非您正在编写 APL(或者可能是 Perl)。