0

In this alpha.txt text file:

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.

I'd like to "remove" all :::* lecture * ::: multiline blocks.


I'd like a POSIX cmd (using sed for example or perl) that a such call:

$ cat alpha.txt | cmd

exactly outputs:

Lorem ipsum
dolor sit amet,
consectetur adipiscing elit.


Etiam malesuada in
velit
in

   rhoncus:

   opcar kel

 Sed pretium

 justo.
abernier
  • 27,030
  • 20
  • 83
  • 114

2 Answers2

2

With sed:

sed '/:::.*lecture/,/:::/d' file
Cyrus
  • 84,225
  • 14
  • 89
  • 153
1
 cat alpha.txt | perl -ne 'print unless /^\s*:::\S+ lecture\s*$/ ... /^\s*:::\s*$/'

Deparsed version of perl one liner:

LINE: while (defined($_ = readline ARGV)) { 
  print $_ unless /^\s*:::\S+ lecture\s*$/ ... /^\s*:::\s*$/;
}
AnFi
  • 10,493
  • 3
  • 23
  • 47