13、Awk编程:正则表达式、变量、数据转换与运算符详解

Awk编程:正则表达式、变量、数据转换与运算符详解

1. 正则表达式相关问题

在Awk中,正则表达式有着独特的使用规则和潜在问题。例如,以下两个条件判断是等价的:

if (/barfly/ || /camelot/)
    print "found"

不过,有一个比较奇怪的规则后果。看下面的布尔表达式:

# Note that /foo/ is on the left of the ~
if (/foo/ ~ $1) print "found foo"

从表面看,这段代码是在测试 $1 是否匹配正则表达式 /foo/ 。但实际上,表达式 /foo/ ~ $1 真正的含义是 ($0 ~ /foo/) ~ $1 。也就是先将输入记录与正则表达式 /foo/ 进行匹配,匹配成功结果为1,失败为0,然后将这个结果与记录的第一个字段进行匹配。由于通常不会进行这样的测试,所以当gawk在程序中看到这种结构时会发出警告。

另外,赋值语句 matches = /foo/ 会根据当前输入记录的内容,将0或1赋值给变量 matches

常量正则表达式还会作为 gensub() sub()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值