我想比较2个文件中的多列,而不是打印符合我的条件的行。 例如:
file1
apple green 4
orange red 5
apple yellow 6
apple yellow 8
grape green 5
file2
apple yellow 7
grape green 10
输出
apple green 4
orange red 5
apple yellow 8
我想删除$1
中$2
和file1
对应$1
中$2
和file2
以及{{1 $3
中的}}小于file1
中的$3
。
我现在只能完成工作的第一部分,即删除file2
中的$1
和$2
对应{{1}中的file1
和$1
的行1}}(字段由制表符分隔):
$2
您能帮我申请最后一个条件吗?
非常感谢!
答案 0 :(得分:3)
在构建数组时存储第三个字段值,然后将其用于比较
$ awk -F '\t' 'FNR==NR{a[$1FS$2]=$3; next} !(($1FS$2 in a) && $3 > a[$1FS$2])' f2 f1
apple green 4
orange red 5
apple yellow 6
grape green 5
更好地写为:
awk -F '\t' '{k = $1FS$2} FNR==NR{a[k]=$3; next} !((k in a) && $3 > a[k])' f2 f1
答案 1 :(得分:2)
这是你的追求:
awk '(NR==FNR){a[$1,$2]=$3; next}!(($1,$2) in a) && a[$1,$2] < $3))' <file2> <file1>