abernier
abernier

Reputation: 28218

remove multiline text blocks

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.

Upvotes: 0

Views: 53

Answers (2)

AnFi
AnFi

Reputation: 10913

 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*$/;
}

Upvotes: 1

Cyrus
Cyrus

Reputation: 88756

With sed:

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

Upvotes: 2

Related Questions