
アルファベットの各文字を使用して、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