¿Как я могу получить весь текст между двумя тегами с помощью RegExp, а затем заменить весь блок другим текстом? - PullRequest
0 голосов
/ 02 июля 2018

В качестве примера у меня есть файл журнала с несколькими строками.

Один пример из файла журнала может быть:

-BEG DET
-SOME TEXT RANDOM REFERING TO REG DET
-SOME TEXT RANDOM REFERING TO REG DET
-SOME TEXT RANDOM REFERING TO REG DET
-END DET

Требуется вывод:

BEG DET OMITTED

С учетом сказанного, мне нужно было бы заменить весь этот текст внутри тегов "-BEG DET" и "-END DET" без кавычек и заменить весь блок, включая упомянутые теги, одним уникальным строка: BEG DET опущены.

Как примечание, число строк между тегами является переменным.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Один из способов сделать это с помощью sed:

sed  -e '/^-BEG/!b' -e ':a' -e'N;/\n-END/!ba' -e 's/\n.*/ OMITTED/;s/-//' filename
0 голосов
/ 02 июля 2018
$ cat file
foo
-BEG DET
-SOME TEXT RANDOM REFERING TO REG DET
-SOME TEXT RANDOM REFERING TO REG DET
-SOME TEXT RANDOM REFERING TO REG DET
-END DET
bar

$ awk '/-BEG DET/{print $0, "OMITTED"; f=1} !f{print} /-END DET/{f=0}' file
foo
-BEG DET OMITTED
bar
...