2017-01-09 84 views
0

我正在嘗試從文件中查找字符串中的最大數字。例如,文件password.txt中,我們有:查找文件中的最大數字

jaime:45:/home/jaime:/bin/bash 
sofia:113:/home/sofia:/bin/bash 
marta:2015:/home/marta:/bin/bash 
pedro:2024:/home/pedro:/bin/bash 

所以人數最多的應該是2024,我們必須將它保存到一個變量: -

number=2024 

我已經試過幾件事情與grepawksed或甚至sort,但沒有任何解決方案。

+0

如果你能分享你的努力並讓我們知道它是如何失敗的話,那將是一件好事。 – Inian

+0

請看看:[我應該怎麼做當有人回答我的問題?](http://stackoverflow.com/help/someone-answers) – Cyrus

回答

3

我建議:

number=$(cut -d: -f 2 file | sort -n | tail -n 1) 
+1

欣賞答案,但對於這個微不足道的任務,建議多個工具是過度擊殺 – Inian

+0

這是所有的最佳答案。說'建議多種工具'是錯誤的陳述。 – HuStmpHrrr

+1

@HuStmpHrrr:這是一個非常有效的答案,爲什麼在'awk'中爲一個函數調用三個進程?這是否意味着多次使用?想象一下當輸入縮放一百萬行文件時的情況?你認爲哪一個表現更快? – Inian

0

試試這個:

number=$(grep -o '[0-9]*' password.txt | sort -nr | head -1) 
+0

如果有一個行,如'sofia9999:113:/ home/sofia:/ bin/bash'在文件中? – arco444

+0

多數民衆贊成在捕捉,但那不是在提供的輸入。 –

+1

@FarhadFarahi;這可能是輸入中的一條有效線 – Inian

1

Awk來救援!

awk -F":" 'BEGIN{max=0}{if(($2)>max) max=$2}END {print max}' file 
2024 

要保存在一個變量,

max="$(awk -F":" 'BEGIN{max=0}{if(($2)>max) max=$2}END {print max}' file)" 
printf "%d\n" "$max" 
2024 
1

@Thotensar:如果您INPUT_FILE是一樣的顯示爲樣本輸入,然後以下可能會幫助你一樣。

awk -F":" '{Q=Q>$2?Q:$2} END{print Q}' Input_file 

我希望這可以幫助你。