如何使用awk
命令從下表中查找最大值和最小值。使用awk提取最大值和最小值
20 90 60 30
55 75 80 85
10 15 99 95
55 95 70 20
9 35 85 75
我要像最大value=99
輸出和min=9
如何使用awk
命令從下表中查找最大值和最小值。使用awk提取最大值和最小值
20 90 60 30
55 75 80 85
10 15 99 95
55 95 70 20
9 35 85 75
我要像最大value=99
輸出和min=9
與 GNU AWK:
awk '{for(x=1;x<=NF;x++)a[++y]=$x}END{c=asort(a);print "min:",a[1];print "max:",a[c]}'
輸出:
min: 9
max: 99
沒有 AWK:
xargs -n1|sort -n|head or tail -1
例如,
分鐘:
kent$ echo "20 90 60 30
55 75 80 85
10 15 99 95
55 95 70 20
9 35 85 75"|xargs -n1|sort -n|head -1
9
最大:
kent$ echo "20 90 60 30
55 75 80 85
10 15 99 95
55 95 70 20
9 35 85 75"|xargs -n1|sort -n|tail -1
99
你當然可以xargs -n1|sort -n
然後管awk來挑選第一個和最後和一次性打印。
awk '
NR == 1 { min=max=$1 }
{
for (i=1;i<=NF;i++) {
min = (min < $i ? min : $i)
max = (max > $i ? max : $i)
}
}
END {
printf "min value = %s\n", (min == "" ? "NaN" : min)
printf "max value = %s\n", (max == "" ? "NaN" : max)
}
' file
導致「南」測試是容納空的輸入文件。
如果你有GNU awk
:
# using array
awk '{x[NR]=$1}END{asort(x);print "max="x[NR],"min="x[1]}' RS=' +|\n' file
max=99 min=9
# No array
awk 'NR==1{m=n=$1}{$1>m?m=$1:m;$1<n?n=$1:n}END{print "max="m,"min="n}' RS=' +|\n' file
max=99 min=9