удалить многострочные текстовые блоки - PullRequest
0 голосов
/ 23 февраля 2020

В этом 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 (например, sed или perl) выполнял такой вызов:

$ cat alpha.txt | cmd

точно выдает:

Lorem ipsum
dolor sit amet,
consectetur adipiscing elit.


Etiam malesuada in
velit
in

   rhoncus:

   opcar kel

 Sed pretium

 justo.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2020

С седом:

sed '/:::.*lecture/,/:::/d' file
1 голос
/ 23 февраля 2020
 cat alpha.txt | perl -ne 'print unless /^\s*:::\S+ lecture\s*$/ ... /^\s*:::\s*$/'

Депарсированная версия perl один вкладыш:

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