2013-12-07 48 views
0

我想查找我的數據的最小值和最大值。 我的數據文件:我的第一個腳本語法錯誤。(最小,最大)

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

你應該把你的輸入例如代碼塊,所以沒有格式丟失。 – Kent

回答

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

你的問題是,你應該只在第一行做{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