我的文件包含三列,我希望得到$3
和$2
的最大值,但在$1
的特定范围内awk
:
Col1 Col2 Col3
==============
X 1 2
X 3 4
Y 5 6
Y 7 8
E.g。我希望获得Col2
的最小值,以及Col3
时Col1=X
的最大值。
我可以处理最大值和最小值,但我不知道如何在特定范围内找到它 这是我的代码:
awk ' min=="" || $2 < min {min=$2; minline=$0} $3 > max {max=$3; maxline=$0};END {print $1,min,max}'
我尝试添加{If ($1==X)}
,但它无效。
答案 0 :(得分:2)
kent$ echo "X 1 2
X 3 4
Y 5 6
Y 7 8
"|awk '$1=="X"{min=$2<min||min==""?$2:min;max=$3>max||max==""?$3:max}END{print min,max}'
1 4
这就是你想要的吗?
答案 1 :(得分:1)
怎么样:
awk 'BEGIN { c=1 }
$1 == "X" { if (c==1) { mmin=$2; mmax=$3 ;c++ }
if ($2<mmin) { mmin=$2 }
if ($3>mmax) { mmax=$3 }
}
END { print "X min: " mmin ", max: " mmax }' INPUTFILE
答案 2 :(得分:1)
如果您想收集所有最小值和最大值:
awk '
$2 < min[$1] {min[$1] = $2}
$3 > max[$1] {max[$1] = $3}
{col1[$1] = 1}
END {for (c in col1) {print c, min[c], max[c]}}
' file