このようなtxtファイルがあります。
32 1
32 2
32 3
32 4
32 5
17 8
17 9
17 10
17 11
14 33
14 34
14 35
このようなtxtファイルを取得したい!そのため、フィールド2からフィールド1の値の最小値と最大値を取得して印刷します。
32 1 5
17 8 11
14 33 35
どんなアイデアがありますか?ありがとうございます。
答え1
答え2
使用awk
:
awk 'min[$1] == "" || $2 < min[$1] { min[$1] = $2 }
max[$1] == "" || $2 > max[$1] { max[$1] = $2 }
END { for (i in min) print i, min[i], max[i] }' file |
sort -rn
max
これは、関連配列の最初の列に関連する最大値と最小値を覚えていますmin
。すべてのデータが処理された後、値が印刷されます。
最後sort -rn
に、出力が降順にソートされることを保証します。
答え3
入力した内容に基づいて並べ替え:
$ awk '$1 != p{printf "%s%s",max,$0; p=$1} {max=OFS $2 ORS} END{printf "%s", max}' file
32 1 5
17 8 11
14 33 35