awk概述
- aws编程语言/数据处理引擎
- 创造者:Aho, Weinberger, Kernighan
- 基于模式匹配检查输入文本,逐行处理并输出
- 通常用在shell脚本中,获取指定的数据
- 单独用时,可对文本数据做统计
- 语法格式
- 格式1:前置命令 | awk [选项] '[条件]{指令}'
- 格式2:awk [选项] '[条件]{指令}' 文件...
cat test.txt
hello the world
welcom to beijing
awk '{print $1,$3}' test.txt
hello world
welcom beijing
awk '{print $1}' test.txt
hello
welcom
awk '{print $1,$2}' test.txt
hello the
welcom to
- 常用选项:-F可以指定分隔符,默认分隔符为(空白或Tab键)
awk -F: '{print $1,$2}' /etc/passwd
root x
bin x
daemon x
awk内置变量
变量 |
说明 |
FS |
保存或设置字段分隔符,例如FS=":",与-F功能一样 |
$n |
指定分隔的第n个字段,如3分别表示第1、3列 |
$0 |
当前读入的整行文本内容 |
NF |
记录当前处理行的字段个数(列数) |
NR |
记录当前已读入行的数量(行数) |
awk -F: '{print NF}' /etc/passwd
7
7
...
awk '{print NF}' test.txt
3
3
0
awk -F: '{print NR,NF}' /etc/passwd
1 7
2 7
3 7
4 7
5 7
6 7
7 7
8 7
···
awk -F: '{print "用户名:",$1,"解释器:", $7}' /etc/passwd
用户名: root 解释器: /bin/bash
用户名: bin 解释器: /sbin/nologin
用户名: daemon 解释器: /sbin/nologin
用户名: adm 解释器: /sbin/nologin
awk过滤的时机
- 在所有行前处理,BEGIN{}
- 逐行处理,{}
- 在所有行后处理,END{}
- 可以单独使用,也可以同时一起使用
awk 'BEGIN {a=34;print a+12}'
46
awk 'BEGIN{x=0}/\<bash$/{x++}END{print x}' /etc/passwd
2
awk -F: 'BEGIN {print NR} END{print NR}' /etc/passwd
0
19
小结
- 基本语法
- 格式1:前置命令 | awk [选项] '[条件]{指令}'
- 格式2:awk [选项] '[条件]{指令}' 文件...
- 过滤时机
- awk 'BEGIN{} [条件]{} END{}' 文件...
网友评论