поиск по содержанию строк выше и ниже условия поиска - PullRequest
0 голосов
/ 24 сентября 2018

Итак, у меня есть файл журнала, в котором есть текст, похожий на этот ... хотя есть много его вариантов:

m = audio 16468 RTP / AVP 0 8 9 18 120 102 104 103 101
a = rtpmap: 0 pcmu / 8000
a = rtpmap: 8 pcma / 8000
a = rtpmap: 9 g722 / 8000
a = rtpmap: 18 g729 / 8000
a = fmtp: 18 приложениеb= да
a = rtpmap: 120 opus / 48000/2
a = rtpmap: 102 iLBC / 8000
a = rtpmap: 104 iSAC / 32000
a = rtpmap: 103 iSAC / 16000
a = rtpmap: 101 телефонное событие / 8000
a = fmtp: 101 0-15

и я хочу выполнить поиск, используя что-то .. notepad ++ .. grep .. что угодноможет работать на это действительно.

Мне нужно найти только блоки с этой строкой ..

a = rtpmap: 18 g729 / 8000

Но не имеютэта строка в пределах 4 или 5 строк над или под ней:

a = rtpmap: 0 pcmu / 8000

Есть какие-нибудь идеи о том, как мне поступить?Я нашел сообщения о том, как искать что-то и затем распечатывать строки выше / ниже этого ... но не должен показывать это, если одна из строк выше и ниже содержит x.

1 Ответ

0 голосов
/ 25 сентября 2018

Попробуйте использовать это в блокноте ++, например: m=audio.*\r?\n(?!(?:^a=.*\r?\n)*^a=rtpmap:0 pcmu/8000)(?:^a=.*\r?\n)*^a=rtpmap:18 g729/8000\r?\n(?:^a=.*\r?\n)*

Это найдет m=audio блоков, за которыми должны следовать a= строк.

Это выберет весь блокпока он находит a=rtpmap:18 g729/8000 и в этом же блоке нет a=rtpmap:0 pcmu/8000 (независимо от расстояния между ними)

Примечание: для notepad ++ не выполняйте not используйте '.соответствует символу новой строки '

См. демонстрацию здесь .

...