我想找到数据的最小值和最大值。 我的数据文件:
1
2
4
5
-3
-13
112
-3
55
42
42
我的剧本:
{min=max=$1}
{if ($1<min) {min=$1} else {next} }
{if ($1>max) {max=$1} else {next} }
END { print min , max }
我跑的时候什么也没做。 你能帮帮我吗?
答案 0 :(得分:1)
这应该做:
awk '{for (i=1;i<=NF;i++) {if ($i<min) {min=$i};if ($i>max) {max=$i}}} END {print "min="min,"max="max}' file
min=-13 max=112
您需要逐个测试每个元素。为此,我们使用循环。
答案 1 :(得分:1)
你的问题是,你应该只在第一行{min=max=$1}
。另外,next
被错误地使用了。您刚刚比较了min
,然后是下一个,因此可能会错误地跳过max
部分。
试试这个:
awk 'NR==1{min=max=$1}
{min=$0<min?$0:min;max=$0>max?$0:max}
END{printf "min:%s\nmax:%s\n",min,max}' file
输出:
min:-13
max:112