Shell-Script
找到 Column3 的最大值並僅列印 Column1 和 2 的值
在 Unix 中,我試圖找到一個可以在 Column3 中找到最大值並在新文件中列印 Column2 和 Column1(但不是 Column3)中的相應值的命令。
Column1 Column2 Column3 A 1 25 B 2 6 C 3 2 D 4 16 E 5 10
Unix命令應該是什麼?我應該使用 grep 還是 awk 或 datamash?
我會用
awk
. 假設數據的格式與您的範例數據完全一致,以下將產生所需的輸出:awk -v MAX=0 '{ if(NR>1 && $3>MAX){WANT1=$1; WANT2=$2; MAX=$3}} END{print WANT1, WANT2}' infile > outfile
假設您的數據完全按照您的說明進行格式化(尤其是對於第 3 列,數字全部左對齊)並且這些數據是通過
cat
ing 文件提供的,您可以嘗試以下命令:*input generating command* | sort -nrk3 | awk '{print $1 " " $2}' > output_file
如果您的數據是由其他命令或源提供的,請更改
cat
為該其他命令。有關更多資訊,請參閱我基本上只是根據您的需求量身定制的這篇文章。編輯:
我稍微更改了上面的命令,因為不需要告訴
sort
從第 3 列字元 1 開始,因為 sort 總是將空白視為分隔符。sort
正如使用者指出的那樣,當然也可以直接將輸入文件提供給。如果標題也是數據的一部分,請將上述命令更改為:*input generating command* | sort -nrk3 | awk '{if (NR>1) print $1 " " $2}' > output_file