File1中:
judi /var 80
judi / 76
judi /opt 85
文件2:
judi /var 80
judi / 80
judi /opt 86
在File2" /"值是(80)高于File1(76)
在File2" / opt"值为(86)高于File1(85)
我需要获得最高值的输出
judi / 80
judi /opt 86
答案 0 :(得分:3)
$ paste file1 file2 | awk '$6>$3{print $4,$5,$6} $6<$3{print $1,$2,$3}'
judi / 80
judi /opt 86
paste file1 file2
将这些行合并在一起,如:
$ paste file1 file2
judi /var 80 judi /var 80
judi / 76 judi / 80
judi /opt 85 judi /opt 86
$6>$3{print $4,$5,$6}
如果第六个字段大于第三个字段(意味着file2中的值大于file1中的值),则打印file2中的值。
$6<$3{print $1,$2,$3}
或者,如果第三个字段大于第六个字段(意味着file1中的值大于file2中的值),则从file1打印值。
假设每个文件可以包含任意数量的空格分隔字段,而我们要比较的数字将始终是最后一个字段。在那种情况下:
$ awk -v f=file2 '{a=$0; n=$NF; getline <f} n>$NF{print a} n<$NF' file1
judi / 80
judi /opt 86
这将从file1读取并将整行保存为变量a
,将最后一个字段中的数字保存为变量n
。然后,使用getline <f
从file2读取,将file2的整行放在变量$0
中,将最后一个数放入变量$NF
。然后我们进行比较并打印出所需的行。