我有一个包含以下内容的文件:deployment.yml
spec:
containers:
- name: atl-lead
image: "registry.it.zone/api/dev/atl-x:1.2.0-SNAPSHOT-110"
imagePullPolicy: Always
我想使用sed
命令将此文件更改为:
spec:
containers:
- name: atl-lead
image: "registry.it.zone/api/dev/atl-x:1.8.0"
imagePullPolicy: Always
我使用下面的命令
sed -i "/registry.vn.eit.zone/open-api/dev/atl-x:.*/registry.vn.eit.zone/open-api/dev/atl-x:1.8.0/g" deployment-canary.yml
但它显示了这个错误:
sed: -e expression #1, char 24: unknown command: `o'
请帮助我。谢谢。
答案1
您始终可以通过在特殊符号前加上反斜杠来转义它们,以避免它们被视为正则表达式\
在这种情况下没有必要,您可以简单地将sed
使用的分隔符从更改/
为例如%
或!
或任何其他单字节字符。
sed 's/search/replace/'
您可以直接书写,而不必书写sed 's%search%replace%'
。
例子:
╰─$ echo 'image: "registry.it.zone/api/dev/atl-x:1.2.0-SNAPSHOT-110"' | sed 's%image: "registry.it.zone/api/dev/atl-x:1.2.0-SNAPSHOT-110"%image: "registry.it.zone/api/dev/atl-x:1.8.0"%'
image: "registry.it.zone/api/dev/atl-x:1.8.0"
提示: 查看Regex101如果您在创建有效的正则表达式时遇到问题。它会在您输入时显示每个匹配项和错误。