我需要使用 shell 脚本 (sed) 编辑文件,当我在字符串中使用“空格”时,我似乎无法让它工作。
这是 bash 脚本:
##Edit instancegroup files with relevant cluster
CLUSTER_NAME=clusters.dev10.k8s.local
oldcluster="kops.k8s.io/cluster:"
newcluster="kops.k8s.io/cluster: ${CLUSTER_NAME}"
sed -i 's@'${oldcluster}'@'${newcluster}'@g' myfile
这是我的文件:
apiVersion: kops/v1alpha2
kind: InstanceGroup
metadata:
creationTimestamp: 2018-01-03T10:45:43Z
labels:
kops.k8s.io/cluster:
这是我得到的错误:
administrator@JenkisSrv01:~/awscluster/instancegroup$ ./try.sh
sed: -e expression #1, char 43: unterminated `s' command
当我从第 4 行中删除空格时,它运行良好:
newcluster="kops.k8s.io/cluster:${CLUSTER_NAME}"
未加引号的空格分隔参数。引用变量:
sed -i 's@'"${oldcluster}"'@'"${newcluster}"'@g' myfile
或更易读
sed -i "s@$oldcluster@$newcluster@g" myfile
请注意,.
在正则表达式中具有特殊含义,因此kops.k8s.io/cluster:
匹配例如kopsXk8sXio/cluster:
. 你需要反斜线点来强制字面意思。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句