小编Jer*_*bas的帖子

为什么不能在 gawk 中将常量正则表达式放在 ~ 运算符的左侧?

使用gawk时,为什么不能在~运算符的左侧放置正则表达式?

例如,给定以下文件,其中的字段以制表符 (\t) 分隔:

$ cat cats
siberian    1970    73  2500
shorthair   1999    60  3000
longhair    1998    102 9859
scottish    2001    30  6000
Run Code Online (Sandbox Code Playgroud)

如果我使用 gawk 查找记录,它会起作用:

$ gawk '$1 ~ /h/' cats
shorthair   1999    60  3000
longhair    1998    102 9859
scottish    2001    30  6000
Run Code Online (Sandbox Code Playgroud)

但是,如果我移动操作数 $1 和 /h/ 左右,它不会:

$ gawk '/h/ ~ $1' cats
gawk: cmd. line:1: warning: regular expression on left of `~' or `!~' operator
Run Code Online (Sandbox Code Playgroud)

~ 操作符的 gawk 手册页说:

正则表达式匹配,否定匹配。注意:不要在 ~ 或 !~ 的左侧使用常量正则表达式 (/foo/)。仅在右侧使用一个。表达式 /foo/ ~ …

gawk

5
推荐指数
1
解决办法
214
查看次数

标签 统计

gawk ×1