Bash
計算出現次數的批次
我必須使用從 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