Bash

計算出現次數的批次

  • February 25, 2015

我必須使用從 A 到 Z 的每個字母來提取單詞的數量。我要創建的腳本將要分析的字典文件的名稱作為參數,並將像這樣使用 ./langstat。 sh dico.txt

我嘗試了一些這樣的事情:

   #!/bin/bash
   cat ~/dico.txt | grep -o A | wc -l

問題是它給了我所有文件中 A 的數量,但我只想知道有 A 的單詞的數量。

你能幫我一把嗎?

你可以改用這個:

for c in {A..Z}; do
 echo -n "$c: "
 tr ' ' '\n' < dico.txt | grep $c | wc -l
done

它的工作原理如下: for 循環從 A 到 Z 遍歷每個字元。tr用換行符替換所有空格,因此每個單詞都有自己的行。然後grep搜尋單詞中的字元,如果找到該字元,則列印它。wc計算那些行。

有幫助嗎?

#!/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

引用自:https://unix.stackexchange.com/questions/186604