我的第一个脚本中的语法错误。(min,max)

时间:2013-12-07 22:22:23

标签: awk syntax-error max min

我想找到数据的最小值和最大值。 我的数据文件:

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 } 

我跑的时候什么也没做。 你能帮帮我吗?

2 个答案:

答案 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