Regex 如何在shell脚本中找到要执行精确匹配的正则表达式

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

我有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     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)