用脚本覆盖文件属性

时间:2020-04-19 08:43:56

标签: bash shell awk sed

我要更改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,我可以看到请求的输出,但是我需要覆盖文件值,而不仅仅是看到输出

1 个答案:

答案 0 :(得分:2)

sed的某些版本需要-i的参数,而在其他版本上则是可选的。

尝试:

sed -i .bak 's/%APP_NAME%/newappname/g' app.yaml

sed -i '' ...,如果您不想创建任何备份(不建议这样做,请参见sed手册)。