Awk编程:正则表达式、变量、转换及运算符详解
1. 正则表达式相关特性
在某些情况下,正则表达式的使用可能会产生意想不到的结果。例如, if (/barfly/ || /camelot/) print "found" 这样的表达式是有效的。但对于 if (/foo/ ~ $1) print "found foo" ,它并非如表面那样简单地测试 $1 是否匹配 /foo/ ,实际上它等价于 ($0 ~ /foo/) ~ $1 。也就是先判断输入记录是否匹配 /foo/ ,结果为 0 或 1,再将这个结果与记录的第一个字段进行匹配。当程序中出现这种结构时,gawk 会发出警告。
另外,赋值语句 matches = /foo/ 会根据当前输入记录的内容,将 0 或 1 赋给变量 matches 。
常量正则表达式还可作为 gensub() 、 sub() 和 gsub() 函数的第一个参数, match() 函数的第二个参数,以及 split() 和 patsplit() 函数的第三个参数。不过,在将正则表达式常量作为用户自定义函数的参数时,可能会出现问题。例如:
function mysub(p
超级会员免费看
订阅专栏 解锁全文
1449

被折叠的 条评论
为什么被折叠?



