1. awk是什么?
AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识。awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk )
2. 原理
依次处理文件的每一行,并读取里面的每一个字段,处理格式相同的文本文件非常方便
3. 使用介绍
awk '{动作}' 文件名 ###
### 事例 $0表示当前行,下面命令表示逐行读取a.txt文件并打印每一行
awk '{print $0}' a.txt
4. 处理标准输入
echo 'this is a test' | awk '{print $0}'
5. 指定分隔符
awk会根据空格和制表符,将每一行分成若干字段,依次用$1、$2、$3代表第一个字段、第二个字段、第三个字段等等,$0表示当前整行
field-separator fs 映射为-F
echo 'hello,world' | awk -F ',' '{print $1}'
如果要用程序解决的话还要编写程序,再读取文件,费时费力,AWK可以方便快速的解决问题
cat log.txt | awk '{a[$1]++}END{for(i in a){print i,a[i]}}'
思路
将文本文本中要统计的列作为key,同样的key不停累加,最后输出累加的数组值。