Как удалить строки из шаблона_1 до второго появления шаблона_2 с помощью sed? - PullRequest
0 голосов
/ 27 мая 2020

Мне нужно найти команду для удаления строк из шаблона_1 до второго вхождения шаблона_2 (включая шаблон_1 и второе вхождение шаблона_2) с помощью sed.

random_line_1
pattern_1
pattern_2
random_line_3
random_line_4
random_line_5
pattern_2
random_line_6

Мне нужно получить:

random_line_1
random_line_6

Я перепробовал множество команд, вдохновленных тем, что я нашел везде, но ничего не работает ...

есть идея?

1 Ответ

0 голосов
/ 28 мая 2020

Не могли бы вы попробовать следующее:

sed -n '
/pattern_1/ {                   ;# if the line matches "pattern_1"
    :l1                         ;# then enter a loop for "pattern_2"
    n
    /pattern_2/ {               ;# if the line matches the 1st "pattern_2"
        :l2                     ;# then enter an inner loop for next "pattern_2"
        n
        /pattern_2/ {           ;# if the line matches the 2nd "pattern_2"
            b                   ;# then exit the loop
        }
        b l2                    ;# else jump to "l2"
    }
    b l1
}
p                               ;# print the pattern space
' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...