【发布时间】:2017-05-23 22:36:54
【问题描述】:
我想要实现的是在文件中找到一个字符串,然后继续寻找另一个匹配项的第一次出现并将其替换为某个值。
例如:字符串 = {Name: name;Address:someadd;var1:var1;var2:var2},{Name: differntName;Address:someadd;var1:var1;var2:var2}
现在我需要做的是找到名称:名称,然后在“名称:名称”之后找到第一次出现的“var2:var2”并将其替换为“var2:newvarvalue”
请注意,我需要在 bash 脚本中使用 sed 完成此任务。
提前致谢。
编辑:我正在尝试修改 .yaml docker compose 文件
【问题讨论】:
-
awk可能是比sed更好的选择 -
感谢@KindStranger 的快速响应,但我需要在 sed 中执行此操作,但一旦我用完了选项,我可以考虑 awk。
-
这是 JSON 数据吗?如果是这样,您最好使用
jq或其他专门的解析器。这与尝试使用 regex 解析 HTML 的论点相同;确保您可以很好地处理基本用例,但是您很快就会遇到一个边缘情况,这将使从一开始就使用专门的解析器获得巨大的时间收益。编辑:这不是 JSON 数据。如果存在的话,使用专门的解析器的要点仍然存在 -
@vinay 如果这是 yaml,我建议使用能够解析和修改 yaml 的编程语言。例如 Python。