问题

给定示例文件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

GitHub 加速计划 / li / linux-dash
12
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐