1列の範囲から最大値を求め、2列を出力します。

1列の範囲から最大値を求め、2列を出力します。

代表的なデータセットがあります。

 35.5259  327   
 35.526  326   
 35.526  325  
 35.5261  324   
 35.5262  323   
 35.5263  322   
 35.5264  321   
 35.5265  320   
 35.5266  319  
 35.5268  318


# Contour 4, label:
 35.5269  317   
 35.527  316  
 35.5272  315  
 35.5274  314   
 35.5276  313   
 35.5278  312   
 35.528  311  

# Contour 4, label:
 35.5282  310  
 35.5285  309  
 35.5287  308  
 35.529  307  
 35.5293  306  

以下を使用して、2列の範囲で2つの最大値を見つけようとします。

awk '320>$2,$2>315 && $1>max1{max1=$1;line=$2} 313>$2,$2>307 && $1>max2{max2=$1;line2=$2} END {printf " %s\t %s\t %s\t %s\n",max1,line,max2,line2}' FILENAME

(txtファイルにスペースが多いため)空の出力が表示されます。どうすれば無視できますか? $1+0 == $1?

col1では320~315の間、col2では313~307の間の最大値を探したいと思います。必要な出力は次のとおりです。

35.5266  319   35.5278  312

希望の出力をどのように取得できますか?ありがとう

ベストアンサー1

,に変更すると&&

しかし、私はあなたにも論理的なエラーがあると思います。と同じでなければ$1>max1なりませんか?$2>line1max2/line2

awk '
  320>$2 && $2>315 && $2>line1 {max1=$1;line1=$2}
  313>$2 && $2>307 && $2>line2 {max2=$1;line2=$2}
  END {printf " %s\t %s\t %s\t %s\n",max1,line1,max2,line2}
' file

おすすめ記事