Sed正则表达式在配置中不匹配

时间:2018-01-23 00:33:33

标签: regex sed

我有一个配置文件,我试图替换一段特定的文本。正则表达式不匹配。

示例配置文字:

containers:
  - name: container-name
    image: docker-registry.prod.com:5000/project:5f9775ae7580e5c06b8c929b91501f722c5d6d99
    ports:
    - containerPort: 80

我正在尝试匹配并替换project:<sha>文字。

我一直在尝试(使用###作为示例):

sed -i '' 's|\/project\:[a-z0-9]+|\/###|g' manifest.yml

1 个答案:

答案 0 :(得分:1)

要使用+(一个或多个重复运算符),您需要使用-E标志(或-r启用扩展正则表达式匹配(ERE)在GNU sed)中。默认情况下,sed将使用BRE:

sed -E -i '' 's|/project:[a-z0-9]+|/###|g' manifest.yml

此外,在s命令(此处为|)中使用替代分隔符时,您不需要转义斜杠(也不是冒号)。