AIX下AWK语言中使用正则表达式

在awk命令中使用正则表达式
awk中可以使用正则表达式,元字符如下:
\,^,.,[],|,(),*,+,?
+:匹配一个或多个字符
?:匹配模式出现频率,/XY?Z/匹配XYZ,YZ

条件操作符
操作符		            描述
———————————     ———————————————
	<	           小于
	<=                 小于等于
	==                 等于
	!=                 不等于
	>=                 大于等于
	~                  匹配正则表达式
	!~                 不匹配正则表达式

1.匹配
grade.txt文件中,第四列的包含Brown的行:
awk '{if($4~/Brown/) print $0}' grade.txt
J.Troll    07/99  4842   Brown-3  12   26   26
L.Tansley  05/99  4712   Brown-2  12   30   28
只要包含Brown,就打印数据:
awk '$0 ~ /Brown/' grade.txt
J.Troll    07/99  4842   Brown-3  12   26   26
L.Tansley  05/99  4712   Brown-2  12   30   28

2.精确匹配
打印第三列包含42的行:
awk '{if($3~/42/) print $0}' grade.txt
J.Troll    07/99  4842   Brown-3  12   26   26
打印第三列包含48的行:
awk '$3==48 {print $0}' grade.txt
P.Bunny    02/99  48     Yello    12   35   28

3.不匹配
打印第三列不包含48的行:
awk '$3!~48 {print $0}' grade.txt
L.Tansley  05/99  4712   Brown-2  12   30   28
查看所有的行:
pg grade.txt
M.Tansley  05/99  48311  Green    8    40   44
J.Lulu     06/99  48317  green    9    24   26
P.Bunny    02/99  48     Yello    12   35   28
J.Troll    07/99  4842   Brown-3  12   26   26
L.Tansley  05/99  4712   Brown-2  12   30   28
打印不包含Brown的行:
awk '$0 !~/Brown/' grade.txt
M.Tansley  05/99  48311  Green    8    40   44
J.Lulu     06/99  48317  green    9    24   26
P.Bunny    02/99  48     Yello    12   35   28
打印第四个域不包含"Brown-2"的行:
awk '$4 != "Brown-2" {print $0}' grade.txt
M.Tansley  05/99  48311  Green    8    40   44
J.Lulu     06/99  48317  green    9    24   26
P.Bunny    02/99  48     Yello    12   35   28
J.Troll    07/99  4842   Brown-3  12   26   26

4.大于
awk '{if($6 > $7) print $1}' grade.txt
P.Bunny
L.Tansley

5.小于
awk '{if( $6 < $7 ) print $0}' grade.txt
M.Tansley  05/99  48311  Green    8    40   44
J.Lulu     06/99  48317  green    9    24   26

6.大小写
awk '/[Gg]reen/' grade.txt
M.Tansley  05/99  48311  Green    8    40   44
J.Lulu     06/99  48317  green    9    24   26

7.任意字符
行首第四个字符为a的行
awk '$1 ~/^...a/' grade.txt
M.Tansley  05/99  48311  Green    8    40   44
L.Tansley  05/99  4712   Brown-2  12   30   28

8.或关系匹配
行中包含Yellow或者Brown:
awk '$0 ~/(Yellow|Brown)/' grade.txt
J.Troll    07/99  4842   Brown-3  12   26   26
L.Tansley  05/99  4712   Brown-2  12   30   28
行中包含G(g)reen:
awk '$0 ~/(G|g)reen/' grade.txt
M.Tansley  05/99  48311  Green    8    40   44
J.Lulu     06/99  48317  green    9    24   26

9.行首:^

10.&&  and
awk '{if ($1=="P.Bunny" && $4=="Yello") print $0}' grade.txt
P.Bunny    02/99  48     Yello    12   35   28

11.||  or
awk '{if ($4=="Yello" || $4~/Brown/) print $0}' grade.txt
P.Bunny    02/99  48     Yello    12   35   28
J.Troll    07/99  4842   Brown-3  12   26   26
L.Tansley  05/99  4712   Brown-2  12   30   28

12.!
awk '$0 !~/2/' grade.txt
M.Tansley  05/99  48311  Green    8    40   44

--the end--

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值