因此,我有一个日志文件,其中包含这样的文本..尽管有很多变体:
m =音频16468 RTP / AVP 0 8 9 18 120102104103101
a = rtpmap:0 pcmu / 8000
a = rtpmap:8 pcma / 8000
a = rtpmap:9 g722 / 8000
a = rtpmap:18 g729 / 8000
a = fmtp:18 annexb =是
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
,我想使用某种东西进行搜索。.记事本++ .. grep ..可能真正起作用的任何东西。
我只需要找到具有这一行的块。
a = rtpmap:18 g729 / 8000
但是不要在其上方或下方的4或5行中包含此行:
a = rtpmap:0 pcmu / 8000
关于我将如何执行此操作的任何想法?我发现了有关如何搜索某物的帖子,然后还打印出了它上面/下面的行。但是,如果上面和下面的行之一包含x,则不必显示它。
答案 0 :(得分:0)
例如,在记事本++上尝试使用此方法: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
(不管它们之间的距离如何),它将选择整个块
注意:对于记事本++,请不要使用'。匹配换行符
请参见演示 here 。