【问题标题】:Delete Lines containing a string after a Matching patterns?删除匹配模式后包含字符串的行?
【发布时间】:2022-06-10 22:20:33
【问题描述】:

在我的 yaml 文件中,我想在匹配模式后使用 Sed 删除一个块。

示例:

Keypages:
- name: Key pages
LaunchPad:
- name: "\U0001F680Launch Pad"
- location: US
Microservices:
- name: 'Micro services '

在这个例子中,当在一行的开头匹配 LaunchPad(例如)时,我想删除它作为它的块(对我来说,以 - 开头的行> 然后在没有找到时停止-)

结果:

Keypages:
- name: Key pages
Microservices:
- name: 'Micro services '

谢谢

【问题讨论】:

  • 我不认为像sed 这样逐行处理的东西是不可能的,您可能需要编写一个python脚本或可以自己处理这种文件修改的东西
  • 我建议使用能够理解 yaml 的工具,例如 github.com/TomWright/dasel
  • 欢迎使用 *。请展示您到现在为止尝试过的内容并解释为什么它没有按预期工作。或者,您可以查看help center,尤其是asking section

标签: shell sed


【解决方案1】:

使用这个 Perl 单行代码:

perl -i.bak -ne 'print unless m{^LaunchPad} .. !m{^\s*-}' in_file

【讨论】:

    最近更新 更多