我的數據是這樣的:如何使用awk選擇最大值基於一列和第二列分組的行?
1 161 a
1 48 b
1 30 c
2 199 d
2 1306 d
2 1290 d
2 81 d
2 51 e
2 82 e
2 93 e
3 64 e
3 99 f
3 123 f
在三個列中的每個值,我想列有在列2和組最大值選擇第1行 因此所需的輸出是
1 161 a
1 48 b
1 30 c
2 1306 d
2 93 e
3 64 e
3 123 f
分組一列我的意思是我想在第1列的所有不同值的結果是什麼我嘗試使用是
awk '$2>max[$3]{max[$3]=$2; row[$3]=$0} END{for (i in row) print row[i]}' file
我得到以下結果
1 161 a
1 48 b
1 30 c
2 1306 d
2 93 e
3 123 f
但我缺少以下行的結果
3 64 e
這是因爲這一個內襯2欄第3列中選擇了不同的值只是最大值,如何按列1對此進行分組以獲得第1列中每個值的所需結果?
嘗試sort -r -n -k2 <文件| awk'\!x [$ 1,$ 3] ++'| sort -k1 –
@soFan:我喜歡這個想法,但是從你的命令'sort -r -n -k2
Inian
@inian,請隨意做。 –