我的任務是創建一個腳本,顯示文件中隨機字符的頻率。輸出應以百分比顯示a到z的頻率(不區分大小寫)。 我在下面創建了這個腳本,我只是想知道是否有辦法讓它更簡單?有人可以看看我的bash腳本和建議如何使它更簡單嗎?
#!/bin/bash
echo Hello, please tell me in which file shall I count the letters:
read file
TOTAL=$(grep -o [[:alpha:]] $file | wc -l)
A=$(grep -io a $file | wc -l)
B=$(grep -io b $file | wc -l)
C=$(grep -io c $file | wc -l)
D=$(grep -io d $file | wc -l)
E=$(grep -io e $file | wc -l)
F=$(grep -io f $file | wc -l)
G=$(grep -io g $file | wc -l)
H=$(grep -io h $file | wc -l)
I=$(grep -io i $file | wc -l)
J=$(grep -io j $file | wc -l)
K=$(grep -io k $file | wc -l)
L=$(grep -io l $file | wc -l)
M=$(grep -io m $file | wc -l)
N=$(grep -io n $file | wc -l)
O=$(grep -io o $file | wc -l)
P=$(grep -io p $file | wc -l)
Q=$(grep -io q $file | wc -l)
R=$(grep -io R $file | wc -l)
S=$(grep -io s $file | wc -l)
T=$(grep -io t $file | wc -l)
U=$(grep -io u $file | wc -l)
V=$(grep -io v $file | wc -l)
W=$(grep -io w $file | wc -l)
X=$(grep -io x $file | wc -l)
Y=$(grep -io y $file | wc -l)
Z=$(grep -io z $file | wc -l)
echo Frequency of 'a': $(($A*100/$TOTAL))%
echo Frequency of 'b': $(($B*100/$TOTAL))%
echo Frequency of 'c': $(($C*100/$TOTAL))%
echo Frequency of 'd': $(($D*100/$TOTAL))%
echo Frequency of 'e': $(($E*100/$TOTAL))%
echo Frequency of 'f': $(($F*100/$TOTAL))%
echo Frequency of 'g': $(($G*100/$TOTAL))%
echo Frequency of 'h': $(($H*100/$TOTAL))%
echo Frequency of 'i': $(($I*100/$TOTAL))%
echo Frequency of 'j': $(($J*100/$TOTAL))%
echo Frequency of 'k': $(($K*100/$TOTAL))%
echo Frequency of 'l': $(($L*100/$TOTAL))%
echo Frequency of 'm': $(($M*100/$TOTAL))%
echo Frequency of 'n': $(($N*100/$TOTAL))%
echo Frequency of 'o': $(($O*100/$TOTAL))%
echo Frequency of 'p': $(($P*100/$TOTAL))%
echo Frequency of 'q': $(($Q*100/$TOTAL))%
echo Frequency of 'r': $(($R*100/$TOTAL))%
echo Frequency of 's': $(($S*100/$TOTAL))%
echo Frequency of 't': $(($T*100/$TOTAL))%
echo Frequency of 'u': $(($U*100/$TOTAL))%
echo Frequency of 'v': $(($V*100/$TOTAL))%
echo Frequency of 'w': $(($W*100/$TOTAL))%
echo Frequency of 'x': $(($X*100/$TOTAL))%
echo Frequency of 'y': $(($Y*100/$TOTAL))%
echo Frequency of 'z': $(($Z*100/$TOTAL))%
我認爲使用循環如下腳本取代上面的腳本的第一部分......但後來,我被卡住,因爲我不知道是否有任何的工作方式這些產出進一步?
#!/bin/bash
echo File:
read file
TOTAL=$(grep -o [[:alpha:]] $file | wc -l)
for letter in {a..z}
do echo grep -io $letter $file | wc -l
done
我也想問問,如果有什麼辦法如何讓我的腳本的輸出保留兩位小數?
這是我的第一個腳本,所以請仁慈:)但我會很感激任何反饋或建議如何變得更好。
嘗試在http://codereview.stackexchange.com/ – Inian
謝謝你的小費! – EvelinaCZ