linux命令实现词频统计

    xiaoxiao2021-03-25  113


    问题

    给定示例文件test.txt如下,对第一列做词频统计并排序 。

    hello marry max thread hello lihua max apple max code nasa connection

    解答

    切割->分组->排序,cat test.txt | cut -d ' ' -f1 | sort | uniq -c | sort -k 1

    1 nasa 2 hello 3 max

    注意:上面在分组前进行一次sort操作并不是多余的,假如不sort,uniq只会对相邻相同的单词分组。


    拓展

    获取不重复的word个数

    cat test.txt | cut -d ' ' -f1 | sort | uniq -c | wc -l

    3

    大数据环境

    上述的wordcount在海量数据情况下适用吗?答:并不适用。因为sort命令采用了归并排序,排序时候的临时小文件是默认放在/tmp路径下的,有时候/tmp的空间有限制,比如4G,那么,超过4G的文件就没有办法用sort了。当然也可以用sort -T Path 来临时文件的目录。见参考博文1。


    参考

    [1] 大数据量下的sort-linux

    转载请注明原文地址: https://ju.6miu.com/read-24247.html

    最新回复(0)