寫乙個 bash 指令碼以統計乙個文字檔案 words.txt 中每個單詞出現的頻率。
為了簡單起見,你可以假設:
words.txt只包括小寫字母和 ' ' 。
每個單詞只由小寫字母組成。
單詞間由乙個或多個空格字元分隔。
示例:假設 words.txt 內容如下:
the day
is sunny the the
the sunny is
is你的指令碼應當輸出(以詞頻降序排列):
the 4is3
sunny 2
day1
說明:不要擔心詞頻相同的單詞的排序問題,每個單詞出現的頻率都是唯一的。
你可以使用一行 unix pipes 實現嗎?
方法一:
cat words.txt |
tr -s ' '
'\n'
|sort
|uniq -c |
sort -r|
awk''
cat --瀏覽檔案
tr -s 替換字串
sort 字典排序
uniq -c 去重並輸出次數,c為次數
sort -r 反向排序
awk 格式化輸出兩列
方法二:將其中的"tr" 命令替換成xargs -n1
cat words.txt |
xargs -n1|
sort
|uniq -c |
sort -r|
awk''
方法三:使用awk統計單詞,並排序輸出
第一步:將檔案單詞進行每行乙個輸出(使用xargs命令)(此處可以不用,也可以使用awk指令碼nf處理)
第二步:使用awk陣列進行統計(陣列+map概念),並輸出
第三步:將輸出元素進行倒序排序 + 輸出位置調整 (sort+awk)
cat words.txt |
xargs -n 1 |
awk' end '
|sort -rn |
awk''
第乙個shell 日誌統計
功能 統計日誌中包含特定字串的行數 bin bash 輸入引數 要查詢的開始日期,要查詢的結束日期 例如 sh count.sh 20160625 20160703 注 區間不得超過15天 datebeg 1 dateend 2 echo datebeg echo dateend if n date...
shell 統計乙個資料夾下不同型別檔案的個數
ls grep i bmp wc lls find name bmp wc l其中wc是word count 的縮寫,統計個數。目錄結構為 d deepfeature frontlip cuijie caozuo caozuo1 bmp openpath d deepfeature frontlip...
linux統計乙個檔案中特定字元的個數
統計乙個檔案中某個字串的個數,其實就是在在一塊沙地裡面找石頭,有的人看到石頭以後,在上面做個標記 grep 然後記住自己做了多少個標記 有的 人看到石頭以後,把它挖了 tr 最後統計自己挖了多少石頭 有的人看到石頭以後,把它跳過去 awk 然後統計自己跳了多少次。這是我用的的檔案 root bzho...