使用带反斜杠的sed命令时出现AWS CloudFormation模板验证错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用带反斜杠的sed命令时出现AWS CloudFormation模板验证错误相关的知识,希望对你有一定的参考价值。
我正在尝试通过AWS CloudFormation模板向文件中添加多行来向AWS lambda serverless-output.yaml文件添加与部署相关的变量。
我有以下sed命令:
sed -ie '/^ Properties:/a Tags:' ./serverless-output.yaml
当我在amazon linux的命令行运行时,它会按预期运行并在Properties:行下正确缩进Tags:行
EC2StartStop:
Properties:
Tags:
当我将该行放在cloudformation模板中时,出现格式错误:
"sed -ie '/^ Properties:/a Tags:' ./serverless-output.yaml",
Error
Template validation error: Template format error: JSON not well-formed.
(line 200, column 36)
为了消除错误,似乎我必须删除'/ a'后面的反斜杠:
"sed -ie '/^ Properties:/a Tags:' ./serverless-output.yaml"
但是然后Tags:行没有缩进,导致.yaml文件中出现语法错误:
EC2StartStop:
Properties:
Tags:
sed命令适用于识别我需要插入行的位置,但是如何通过cloudformation运行命令时在插入的行上获得正确的缩进?
答案
不知道cloudformation template
规则,但通常双引号字符串允许用于特殊序列,允许不可打印的字符及其oct / hex表示等。例如:
"
用于表示引号内的双引号字符。所以,要代表它需要
\
"sed -ie '/^ Properties:/a\ Tags:' ./serverless-output.yaml",
以上是关于使用带反斜杠的sed命令时出现AWS CloudFormation模板验证错误的主要内容,如果未能解决你的问题,请参考以下文章
运行命令 **sed** 时出现 docker 容器错误 [重复]