【问题标题】:remove multiline text blocks删除多行文本块
【发布时间】:2020-06-07 05:44:30
【问题描述】:

在这个alpha.txt 文本文件中:

Lorem ipsum
dolor sit amet,
consectetur adipiscing elit.

:::info lecture
Duis eget
laoreet nunc.
:::

Etiam malesuada in
velit
in

   rhoncus:
   :::warning lecture
    Sed pretium justo eu
   tortor vehicula,

   tristique
   :::

   opcar kel

 Sed pretium

 justo.

我想“删除”所有 :::* lecture * ::: 多行块。


我想要一个 POSIX cmd(例如使用 sedperl),这样的调用:

$ cat alpha.txt | cmd

确切的输出:

Lorem ipsum
dolor sit amet,
consectetur adipiscing elit.


Etiam malesuada in
velit
in

   rhoncus:

   opcar kel

 Sed pretium

 justo.

【问题讨论】:

    标签: perl sed


    【解决方案1】:

    使用 sed:

    sed '/:::.*lecture/,/:::/d' file
    

    【讨论】:

      【解决方案2】:
       cat alpha.txt | perl -ne 'print unless /^\s*:::\S+ lecture\s*$/ ... /^\s*:::\s*$/'
      

      perl one liner 的解析版本:

      LINE: while (defined($_ = readline ARGV)) { 
        print $_ unless /^\s*:::\S+ lecture\s*$/ ... /^\s*:::\s*$/;
      }
      

      【讨论】:

      猜你喜欢
      • 2023-04-04
      • 2012-03-28
      • 1970-01-01
      • 2017-03-01
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      相关资源
      最近更新 更多