2016-02-26 39 views
0

我試圖編寫bash代碼來獲得最高分的名稱。 的數據是這樣的:如何在bash中獲得最高分數的名稱?

Name Score 
a  63 
b  95 
c  56 

所以我第一次排序的文件,然後打印第一列

sort -rk 2 -n names.csv 
awk 'NR == 2{print $1}' names.csv 

的第二線,但該計劃並沒有給我任何結果。

回答

0

您需要在一行中完成所有操作。

$ sort -rk 2 -n name.csv 
b  95 
a  63 
c  56 
Name Score   
$ sort -rk 2 -n names.csv | awk 'NR==1{print $1}' 
b 
0

排序通常將其輸出發送到控制檯,因此要麼使用輸出重定向或使用管道。

重定向是:

sort -rk -2 names.csv > sorted.csv 
awk '{NR=2 print $1}' sorted.csv 

但是使用管道更優雅,特別是如果你不想保持sorted.csv(這將需要第三個命令將其刪除)。

完成這樣:

sort -rk -2 names.csv | awk '{NR=2 print $1}' 

Simples!

+0

謝謝。我試圖使用管道,但結果仍然爲空。 – Miranda

0

您可以使用剪切

sort -rk 2 -n names.csv | cut -f1 -d' ' | head -n1 
+3

請解釋你的解決方案。 –

+0

我也不明白。 – Miranda

相關問題