Regex 如何在shell脚本中找到要执行精确匹配的正则表达式
我有kubernetes命令的输出Regex 如何在shell脚本中找到要执行精确匹配的正则表达式,regex,bash,shell,Regex,Bash,Shell,我有kubernetes命令的输出 kubectl get pods | grep eam-ui eam-ui-hk8rk 1/1 Running 0 43m eam-ui-jn9jj 1/1 Running 0 43m eam-ui-v02-2vdlh 1/1 Runn
kubectl get pods | grep eam-ui
eam-ui-hk8rk 1/1 Running 0 43m
eam-ui-jn9jj 1/1 Running 0 43m
eam-ui-v02-2vdlh 1/1 Running 0 2d6h
eam-ui-v02-4gkxx 1/1 Running 0 2d6h
eam-ui-v03-2hqjq 1/1 Running 0 2d22h
eam-ui-v03-jv4w7 1/1 Running 0 2d22h
我需要匹配第一列中的精确字符串,如(eam-ui,eam-ui-v02,eam-ui-v03)。最后5个字母数字将在每次执行时更改
尝试使用-w,甚至使用-F选项。与v02和v03一起工作,工作正常。但对于eam ui,它与所有
$ kubectl get pods | grep -w eam-ui-v02
eam-ui-v02-2vdlh 1/1 Running 0 2d6h
eam-ui-v02-4gkxx 1/1 Running 0 2d6h
kubectl get pods | grep -w eam-ui-v03
eam-ui-v03-2hqjq 1/1 Running 0 2d22h
eam-ui-v03-jv4w7 1/1 Running 0 2d22h
get pods | grep -w eam-ui
eam-ui-hk8rk 1/1 Running 0 48m
eam-ui-jn9jj 1/1 Running 0 48m
eam-ui-v02-2vdlh 1/1 Running 0 2d6h
eam-ui-v02-4gkxx 1/1 Running 0 2d6h
eam-ui-v03-2hqjq 1/1 Running 0 2d22h
eam-ui-v03-jv4w7 1/1 Running 0 2d22h
从上面我只想要
eam-ui-hk8rk 1/1 Running 0 48m
eam-ui-jn9jj 1/1 Running 0 48m
这将排除包含v02或v03的管线:
grep-v-e'v0[2 | 3]'test.txt
我建议使用awk
,因为您只需要检查第一个字段值:
# To check eam-ui
kubectl get pods | awk '$1 ~ /^eam-ui-[[:alnum:]]{5}$/'
# To check eam-ui-v02
kubectl get pods | awk '$1 ~ /^eam-ui-v02-[[:alnum:]]{5}$/'
# To check eam-ui-v03
kubectl get pods | awk '$1 ~ /^eam-ui-v03-[[:alnum:]]{5}$/'
详细信息
-字符串的开头^
-文字文本eam ui-
-五个字母数字字符[[:alnum:][5}
-字符串结束$
grep-E'(eam ui-[^-]+\s)