【问题标题】:Remove multiple lines from a given match until an empty line从给定的匹配项中删除多行,直到出现空行
【发布时间】:2022-11-07 20:40:46
【问题描述】:

在 unix 系统上,我有一个文件,我需要删除与 Package: <PKG_NAME> 匹配的所有行,直到找到一个空行。这是一个示例,我需要删除 terminfo 信息:

...
Package: kmod-usb-storage
Version: 5.4.218-1
Depends: kernel (= 5.4.218-1-0c02597a113d34441a9bfe9294e3fb84), kmod-scsi-core, kmod-usb-core
Status: install user installed
Architecture: mips_24kc
Installed-Time: 1667822688
Auto-Installed: yes

Package: terminfo
Version: 6.2-1
Depends: libc
Status: install user installed
Architecture: mips_24kc
Installed-Time: 1667816896

Package: libuci-lua
Version: 2020-10-06-52bbc99f-5
Depends: libc, libuci20130104, liblua5.1.5
Status: install user installed
Architecture: mips_24kc
Installed-Time: 1667816896
Auto-Installed: yes
...

之后我不需要关于terminfo 的信息:

...
Package: kmod-usb-storage
Version: 5.4.218-1
Depends: kernel (= 5.4.218-1-0c02597a113d34441a9bfe9294e3fb84), kmod-scsi-core, kmod-usb-core
Status: install user installed
Architecture: mips_24kc
Installed-Time: 1667822688
Auto-Installed: yes

Package: libuci-lua
Version: 2020-10-06-52bbc99f-5
Depends: libc, libuci20130104, liblua5.1.5
Status: install user installed
Architecture: mips_24kc
Installed-Time: 1667816896
Auto-Installed: yes
...

我将在 shell 脚本中使用此功能,我尝试使用 sedawk 没有有用的结果,我无法解决这个问题。

【问题讨论】:

    标签: shell unix awk sed


    【解决方案1】:

    你可能会逃脱:

     awk '!/terminfo/' RS= ORS='
    
    ' 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 2021-10-22
      • 2014-10-07
      • 2012-09-04
      • 1970-01-01
      • 2020-05-10
      相关资源
      最近更新 更多