2016-04-25 81 views
1

一段時間以來,我一直在嘗試編寫一個bash腳本,它應該讀取* .txt文件並輸出單詞出現次數。到目前爲止我沒有運氣。我知道算法,唯一的問題是語法。用於字數統計的Bash Shell腳本

該腳本應該如何工作?

當我在終端中輸入./myScript.sh myTextFile.txt,它應該輸出所有的字出現在排序順序從最大到最小百分比如下:

17 is 7.1% 
12 all 6.4% 
10 house 5.5% 
5 tree 3.7% 

........... .........和soo上。

如果我把一個開關./myScript.sh -x 3 myTextFile.txt它應該只輸出長度超過3個字符的單詞。

如果我把開關./myScript.sh -y 4 myTextFile.txt它應該只輸出出現4次或更多的話。在這裏,我對如何確定使用哪些開關以及它們持有的值有很多問題。

當然,如果我把一個不存在的文件或錯誤的開關的腳本應該拋出一個錯誤。

謝謝你的一切幫助。

+0

更好的開始顯示你的嘗試和你錯過了什麼,所以我們可以嘗試幫助 – fedorqui

+0

你能顯示你的腳本,以便我們可以幫助嗎? – Auzias

回答

1

您可以使用awk得到字數:

awk '{for(i=1;i<=NF;i++){a[$i]++;tot++}}END{for(j in a) {printf("%s %s %2.1f%\n",a[j],j,a[j]/tot*100)}}' myTextFile.txt | sort -g 

awk命令填充陣列a[]所有的話,他們的指標數。

tot是遇到的單詞總數。

END語句在數組中循環顯示計數,字和百分比。

sort -g正在執行基於計數的數字排序。