我正在尝试编辑以下 YAML 文件
db:
host: 'x.x.x.x.x'
main:
password: 'password_main'
admin:
password: 'password_admin'
要编辑 host
部分,我使用它
sed -i "/^\([[:space:]]*host: \).*/s//\1'$DNS_ENDPOINT'/" config.yml
但我找不到更新密码的方法 main
和 admin
(它们是不同的值)。
我试着玩玩 \n
和 [[:space:]]
并得到了不同的口味:
sed -i "/^\([[:space:]]*main:\n*[[:space:]]*password: \).*/s//\1'$DNS_ENDPOINT'/" config.yml
但从来没有让它工作。非常感谢任何帮助!
编辑- 要求:没有外部二进制文件/工具。只是很好的狂欢。
原文由 Mornor 发布,翻译遵循 CC BY-SA 4.0 许可协议
或者如果您的新文本包含您不想扩展的转义序列(例如
\t
或\n
),在设置密码时似乎很可能,那么:请参阅 如何在 awk 脚本中使用 shell 变量? 我为什么/如何使用
ENVIRON[]
访问 shell 变量而不是在第二个脚本中设置 awk 变量。