3.使用模式
gawk程序支持多种类型的匹配模式来过滤数据记录,这一点跟sed编辑器大同小异。BEGIN和END关键字是用来在读取数据流之前或之 后执行命令的特殊模式。类似地,你可以创建其他模式在数据流中出现匹配数据时执行一些命令。
3.1 正则表达式
在使用正则表达式时,正则表达式必须出现在它要控制的程序脚本的左花括号前。
# 匹配包含'11'的行,打印以','作为分隔符的第1个字段
$ gawk 'BEGIN{FS=","} /11/{print $1}' data1
3.2 匹配操作符
匹配操作符(~)允许将正则表达式限定在记录中的特定数据字段。可以指定匹配操作符、数据字段变量以及要匹配的正则表达式。
# 使用匹配操作符匹配以'data2'开头的行,并打印该行所有字段
$ gawk 'BEGIN{FS=","} $2 ~ /^data2/ {print $0}' data1
也可以使用'!'来排除正则表达式匹配
# 在/etc/passwd文件中找到匹配不到rich的行,并打印第1个和最后1个字段
$ gawk –F: '$1 !~ /rich/{print $1,$NF}' /etc/passwd
3.3 数学表达式
在gawk模式匹配中,可以使用任何常见的数学表达式:
- ==
- <=
- <
- >=
- >
# 仅打印/etc/passwd文件中,第4个域的值为0的行中的第1个字段
$ gawk -F: '$4 == 0{print $1}' /etc/passwd
网友评论