"regular expression compile failed (missing operand)" 检查星号时 AWK 中的问题
"regular expression compile failed (missing operand)" issue in AWK when checking for an asterisk
我正在尝试为自己创建一些有用的别名,并正在尝试找到一种查看当前 Kubernetes 上下文命名空间的方法。
k config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-test@kubernetes2 kubernetes2 kubernetes-test test
kubernetes-admin@kubernetes kubernetes kubernetes-admin default
我只想输出'test',所以我试了:
k config get-contexts | awk '/*/{print }'
得到的错误:
awk: line 1: regular expression compile failed (missing operand)
首先,正则表达式中的*
是一个量词,意思是“零次或多次出现”。既然是正则元字符,应该转义,\*
:
k config get-contexts | awk '/\*/{print }'
但是,由于您正在寻找固定字符串而不是模式,因此您可以使用 index
:
k config get-contexts | awk 'index([=11=], "*") {print }'
如果在“记录”(行)内的任何地方找到 *
,第五个字段将被 print
ed。
您收到该错误消息是因为 *
是一个正则表达式重复元字符,因此将其用作正则表达式中的第一个字符是未定义的行为,因为它之前没有任何内容可以重复。当您显然想要的是完整的字符串匹配时,您还使用了部分行正则表达式匹配(请参阅 了解不同之处):
k config get-contexts | awk '=="*"{ print }'
我正在尝试为自己创建一些有用的别名,并正在尝试找到一种查看当前 Kubernetes 上下文命名空间的方法。
k config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-test@kubernetes2 kubernetes2 kubernetes-test test
kubernetes-admin@kubernetes kubernetes kubernetes-admin default
我只想输出'test',所以我试了:
k config get-contexts | awk '/*/{print }'
得到的错误:
awk: line 1: regular expression compile failed (missing operand)
首先,正则表达式中的*
是一个量词,意思是“零次或多次出现”。既然是正则元字符,应该转义,\*
:
k config get-contexts | awk '/\*/{print }'
但是,由于您正在寻找固定字符串而不是模式,因此您可以使用 index
:
k config get-contexts | awk 'index([=11=], "*") {print }'
如果在“记录”(行)内的任何地方找到 *
,第五个字段将被 print
ed。
您收到该错误消息是因为 *
是一个正则表达式重复元字符,因此将其用作正则表达式中的第一个字符是未定义的行为,因为它之前没有任何内容可以重复。当您显然想要的是完整的字符串匹配时,您还使用了部分行正则表达式匹配(请参阅
k config get-contexts | awk '=="*"{ print }'