Shell程式設計 統計乙個檔案中的詞頻

2021-10-23 11:08:34 字數 1098 閱讀 9008

寫乙個 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...