2016-04-25 82 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正在执行基于计数的数字排序。