使用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 ×1