Skip to content

Linux awk

更新日期 2022-3-9
  • 2022-3-9 更新说明
  • 2015-12-16 创建文档

用awk来统计某个文本中单词出现的次数,并以一定的格式输出结构

用法介绍

通常,awk逐行处理文本。awk每接收文件的一行,然后执行相应的命令来处理。

用legal文件来做示例

$ cat /etc/legal

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

没有这个文件的话用/etc/bashrc也行,或者其他文件

搜索统计单词“law”的个数

$ awk -F : '/law/{count++} END{print "the count is ",count}' /etc/legal
the count is  1

count用来计数

END 表示搜索完毕后执行的命令

统计单词“the”的个数

$ awk -F : '/the/{count++} END{print "the count is ",count}' /etc/legal
the count is  3
找到指定单词,自定义变量count自增,最后输出语句和count值

命令sort,把各行按首字母排列顺序重新排列起来

  • sort -nr,每行都以数字开头,按数字从达到小,排列各行
  • uniq -c,统计各行出现的次数,并把次数打印在每行前端
  • awk参数 NF ,浏览记录的域的个数

awkuniqsort命令结合起来使用,中间需要用竖线|,整体如下

awk -F' ' '{for(i=1;i<=NF;i=i+1){print $i}}' /etc/legal |
sort|uniq -c|sort -nr|awk -F' ' '{printf("%s %s\n",$2,$1)}'
统计/etc/legal中单词出现次数,并以“单词 次数”格式输出结果

作者: rustfisher.com | rf.cs@foxmail.com
示例: AndroidTutorial Gitee, Tutorial Github
本文链接: https://www.an.rustfisher.com/linux/usr/awk-use/
一家之言,仅当抛砖引玉。如有错漏,还请指出。如果喜欢本站的内容,还请支持作者。也可点击1次下方的链接(链接内容与本站无关),谢谢支持服务器。 如有疑问,请与我联系:Android issues - gitee
微信订阅号