我要更改yaml文件中的值
例如yaml
...
metadata:
name: appname
spec:
replicas: 3
selector:
matchLabels:
app: %APP_NAME%
现在我尝试了以下方法
sed -i 's/%APP_NAME%/newappname/g' app.yaml
我得到了错误:
sed: 1: "app.yaml": extra characters at the end of d command
我不确定如何克服这个问题,我需要它来覆盖文件值,而不仅仅是将其视为输出
最后文件应该看起来像
...
metadata:
name: appname
spec:
replicas: 3
selector:
matchLabels:
app: newappname
如果我从命令中删除了-i
,我可以看到请求的输出,但是我需要覆盖文件值,而不仅仅是看到输出
答案 0 :(得分:2)
sed
的某些版本需要-i
的参数,而在其他版本上则是可选的。
尝试:
sed -i .bak 's/%APP_NAME%/newappname/g' app.yaml
或sed -i '' ...
,如果您不想创建任何备份(不建议这样做,请参见sed手册)。