5500 5700
5600 5800
5700 5800
5600 5900
5900 6100
5900 6100
5900 6100
5800 6000
5800 6100
5900 6100
5800 6200
5700 5800
我有一个上面有两列的文件。我需要找出第一列中每两行的最小值和第二列中每两行的最大值,如何使用awk来实现?所需的输出将是
Min Max
5500 5800
5600 5900
5900 6100
5800 6100
5800 6100
5700 6200
$ awk 'BEGIN { print "Min", "Max" } {a=$1; b=$2; getline; print ($1<a?$1:a), ($2>b?$2:b)}' data.in
Min Max
5500 5800
5600 5900
5900 6100
5800 6100
5800 6100
5700 6200
该awk
代码将第一和第二列中的当前值分别保存到变量a
和中b
。然后,它将显式读取下一行,a
并在第一列中打印的最小值和新值,以及在第二列中显示的最大值b
和新值。
($1 < a ? $1 : a)
正在使用三元运算符?:
进行比较并根据比较结果选择一个值。
如果要使用制表符分隔的输出:
$ awk 'BEGIN {OFS="\t"; print "Min", "Max"} {a=$1; b=$2; getline; print ($1<a?$1:a), ($2>b?$2:b)}' data.in
Min Max
5500 5800
5600 5900
5900 6100
5800 6100
5800 6100
5700 6200
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句