用于字数统计的Bash Shell脚本
问题描述:
一段时间以来,我一直在尝试编写一个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次或更多的话。在这里,我对如何确定使用哪些开关以及它们持有的值有很多问题。
当然,如果我把一个不存在的文件或错误的开关的脚本应该抛出一个错误。
谢谢你的一切帮助。
答
您可以使用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
正在执行基于计数的数字排序。
更好的开始显示你的尝试和你错过了什么,所以我们可以尝试帮助 – fedorqui
你能显示你的脚本,以便我们可以帮助吗? – Auzias