这有点奇怪。我正在使用gsed编辑云配置文件,然后再将其推送到服务器。由于某种原因,当我尝试将文件打印到替换字符串时,gsed(gnu-sed)会抛出错误。各种逃避方法似乎都不起作用,这是相当令人沮丧的。任何人都可以看到这里有什么问题吗?
将证书文件读入变量
CERT =`cat ../$1/tmp/$1-cert.csr |读我的时候;回声$ i; done`
替换云配置文件:
gsed -i" / write_files:/ a \ - path:/home/core/$1-cert.csr\n permissions:0755 \ n owner:core:core \ n content:| \ n`printf '%S \ n' \" $ CERT \"`" ../$ 1 / TMP /云config.yaml
错误:
gsed: -e expression #1, char 168: unknown command: `M'
M恰好是cert文件第二行的第一个字符:
-----BEGIN CERTIFICATE REQUEST-----
MIICvjCCAaYCAQAweTELMAkGA1UEBhMCVUsxFzAVBgNVBAgMDkdyZWF0ZXIgTG9u
答案 0 :(得分:0)
我最终使用了awk:
awk '/write_files:/{print $0 RS "- path: /home/core/certs/'"$1"'-cert.csr" RS " permissions: 0755" RS " owner: core:core" RS " content: |"; while(getline line<"../'"$1"'/tmp/'"$1"'-cert.csr"){print " "line};next}1' ../$1/tmp/cloud-config.yaml > swap.txt && mv swap.txt ../$1/tmp/cloud-config.yaml