我必须使用字母表中的每个字母从 A 到 Z 提取单词数。我要创建的脚本将要分析的字典文件的名称作为参数,并将像这样使用 ./langstat。 sh dico.txt
我尝试了一些这样的事情:
#!/bin/bash
cat ~/dico.txt | grep -o A | wc -l
问题是它给了我所有文件中 A 的数量,但我只想知道 A 进入的单词的数量。
你能帮我一下吗?
答案1
你可以用这个代替:
for c in {A..Z}; do
echo -n "$c: "
tr ' ' '\n' < dico.txt | grep $c | wc -l
done
它的工作原理如下:for 循环从 A 到 Z 遍历每个字符。tr
用换行符替换所有空格,因此每个单词都有自己的行。然后grep
搜索单词中的字符,如果找到该字符则将其打印出来。wc
计算这些行。
答案2
有帮助吗?
#!/bin/bash
tr ' ' '\n' < "$1" | sort -u > my.tmp
for letter in {A..Z}
do
printf "Words with %c : " $letter
grep -iwc "\w*$letter\w*" my.tmp
echo
done
rm my.tmp