3つの列で構成される大規模なデータセットがあります。 3番目の列で最大値と最小値を見つけて(ゼロと負の数が混在しているので、最大値と最小の負の値を探したい)、特定の行を印刷できるようにしたいです。どうすればいいですか?
入力例:
-6.4 -3.6 -0.00
-6.4 -3.5 -0.00
-6.4 -3.5 -0.00
-6.4 -3.5 -0.00
.
.
.
-2.4 -1.6 -14.50
-2.4 -1.5 -14.49
-2.4 -1.5 -14.49
-2.4 -1.5 -14.49
.
.
.
-5.4 -2.6 -4.52
-5.4 -2.6 -4.53
-5.4 -2.6 -4.50
-5.4 -2.6 -0.00
-5.4 -2.6 -0.00
出力:最小:-2.4 -1.6 -14.50
最大値:-5.4 -2.6 -4.50
ベストアンサー1
答えを受け入れましたが、より簡単な方法は次のとおりです。
egrep -v "0.00|^\." file.txt | awk 'NR==1 {print "min:",$0} END{print"max:",$0}'
出力:
min: -2.4 -1.6 -14.50
max: -5.4 -2.6 -4.50
- 0が不要なため、実際には最大数であっても、このegrep -v
コマンドは0.00を含み、「.」で始まる行を除くすべての行を印刷します。
- 上記の作業が完了すると、行が小さいものから大きなものの順にまとめられました。awk
次に、「min:」プレフィックスがある最初の行と「max:」プレフィックスがある最後の行を印刷します。
その列の値が順序が間違っている場合は、sort -k3
コマンドの後にパイプしてから(ソートしたい3番目の列であると仮定して)、それに続くコマンドにegrep
パイプすることができます。awk