【发布时间】:2017-05-04 00:48:44
【问题描述】:
我有一个 config.yaml 文件,其中包含我想使用 bash 脚本从配置中删除的以下 kafka 代理列表。
kafka.brokers:
- "node003"
- "node004"
我目前正在使用以下命令从脚本内部调用 vi:
vi $CONF_BENCHMARK/config.yaml -c ":%s/kafka.brokers:\(\n\s*-\s".*"\)*/kafka.brokers:/g" -c ':wq!'
我知道 sed 是完成相同任务的更合适的工具,但是当我尝试将上述正则表达式转换为 sed 时,它不起作用。 p>
sed -i -e "s/kafka.brokers:\(\n\s*-\s".*"\)*/kafka.brokers:/g" $CONF_BENCHMARK/config.yaml
我做错了什么?
【问题讨论】:
-
sed is a more appropriate tool-> 不,YAML 解析器是更合适的工具 :-) YAML 相当复杂,根本不适合使用 shell 脚本等进行临时修改。