返回信息流awk 'BEGIN{a=1000;print a;if(a ~! /^1000$/) {print a;}}'
结果:
1000
1000
awk 'BEGIN{a="test";print a;if(a ~! /^test$/) {print a;}}'
结果:
test
为什么这两个结果不一致,求解答
这是一条镜像帖。来源:北邮人论坛 / study-share / #190736同步于 2019/4/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
StudyShare机器人发帖
【问题】awk 问题
sunnygirl
2019/4/22镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
【 在 gaoweiwei 的大作中提到: 】
: 正则不匹配应该是 !~ 你写成了 ~!
: ~! 的意思是先求反,再正则匹配, 对正则表达式求反貌似没啥含义了
我看百度上说的是!~和~!是一样的作用,正则不匹配,那为啥test和1000测试的结果是不一样呢
【 在 sunnygirl 的大作中提到: 】
:
: 我看百度上说的是!~和~!是一样的作用,正则不匹配,那为啥test和1000测试的结果是不一样呢
参考一下awk 的manpage,网络的文章需要甄别一下。
$ man awk
~ !~ Regular expression match, negated match. NOTE: Do not use a constant regular expression (/foo/) on the left-hand side of a ~ or !~. Only use one on
the right-hand side. The expression /foo/ ~ exp has the same meaning as (($0 ~ /foo/) ~ exp). This is usually not what was intended.
至于为什么test和1000测试的结果不同,这个很好理解。
对正则表达式求反 ! /^1000$/ 返回值要么是0要么是1(布尔型) ,无论是0还是1都可以跟1000匹配,而无法跟test匹配
【 在 gaoweiwei 的大作中提到: 】
:
: 参考一下awk 的manpage,网络的文章需要甄别一下。
: [code=bash]
: ...................
666佩服