我有一个配置文件,我试图替换一段特定的文本。正则表达式不匹配。
示例配置文字:
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
答案 0 :(得分:1)
要使用+
(一个或多个重复运算符),您需要使用-E
标志(或-r
启用扩展正则表达式匹配(ERE)在GNU sed
)中。默认情况下,sed
将使用BRE:
sed -E -i '' 's|/project:[a-z0-9]+|/###|g' manifest.yml
此外,在s
命令(此处为|
)中使用替代分隔符时,您不需要转义斜杠(也不是冒号)。