2017-05-26 50 views
0

如何輸出內部最低值的線的位置?如何查找文件中最低值的位置?

我有數據的文件象下面這樣:

2233|charles harris |g.m.  |sales  |12/12/52| 90000 
9876|bill johnson |director |production|03/12/50|130000 
5678|robert dylan |d.g.m. |marketing |04/19/43| 85000 
2365|john woodcock |director |personnel |05/11/47|120000 
5423|barry wood  |chairman |admin  |08/30/56|160000 
1006|gordon lightfoot|director |sales  |09/03/38|140000 

我需要找到最後一列中的最低值,並返回其位置

+1

你嘗試過什麼? Stackoverflow不是一個免費的編碼服務。我們幫助*您*編寫代碼,因此您需要解釋您嘗試的內容和/或詢問特定問題,以幫助您在代碼中執行下一步/第一步。 – kaylum

+0

這應該是一個簡單的'awk'練習。保留兩個變量,即迄今爲止所看到的最低值,以及找到它的行號。只要你得到的值低於第一個變量,就更新當前行的兩個變量。最後,打印這兩個變量。 – Barmar

+0

或者使用'cat -n'通過管道傳輸到'head -1',通過管道傳輸到'awk'。例如,如果文件是foo.txt:'cat -n foo.txt | sort -t \ | -n -k 6,6 |頭-1 | awk'{print $ 1}''。刪除awk以打印其原始行號所在的完整行,或者調整awk以僅打印沒有行號的行。 – Deathgrip

回答

1

您可以依次使用該命令只得到其中示出的值的行號(如果值出現一次以上時則它將給幾個行號):

var=$(cut -d "|" -f 6 filename|sort -nr|tail -n1|grep -w -n -f /dev/stdin filename|awk -F ":" '{print $1}');cut -d "|" -f 6 filename |grep -w -n $var filename|awk -F ":" '{print $1}' 

爲了看到具有最低VALU線e和它的行號使用這個命令:

var=$(cut -d "|" -f 6 filename|sort -nr|tail -n1|grep -w -n -f /dev/stdin filename|awk -F ":" '{print $1}');cut -d "|" -f 6 filename |grep -w -n $var filename 
+0

謝謝,它工作:) – NotAWizzard

相關問題