У меня есть файл m3u, как показано ниже. Я хочу удалить все строки, кроме шаблона и следующей первой строки. или сохраните шаблон и следующую первую строку как другой файл.
Шаблоны group-title="TR ULUSAL" , group-title="TR HABER" , group-title="TR BELGESEL" Исходные данные:
#EXTINF:-1 tvg-id="" tvg-name="TRT HD 1080" tvg-logo="http://url/tr/trt.png" group-title="TR ULUSAL",TRT HD 1080
http://xxx.xx:xx/xx/xx/123
#EXTINF:-1 tvg-id="" tvg-name="THRILLER 16 Blocks" tvg-logo="http://url/Blocks.jpg" group-title="DEUTSCHE FILME",THRILLER 16 Blocks
http://xxx.xx:xx/xx/xx/632.mkv
#EXTINF:-1 tvg-id="" tvg-name="TRT HD 720" tvg-logo="http://url/trt.png" group-title="TR ULUSAL",TRT HD 720
http://xxx.xx:xx/xx/xx/218
#EXTINF:-1 tvg-id="" tvg-name="CNN TURK 1080" tvg-logo="http://url/cnnturkhd.png" group-title="TR HABER",CNN TURK 1080
http://xxx.xx:xx/xx/xx/926
#EXTINF:-1 tvg-id="" tvg-name="THRILLER 28 Weeks Later" tvg-logo="http://url/tr/Later.jpg" group-title="RUSSIA",THRILLER 28 Weeks Later
http://xxx.xx:xx/xx/xx/4805.mkv
#EXTINF:-1 tvg-id="" tvg-name="THRILLER 16 Blocks" tvg-logo="http://url/Blocks.jpg" group-title="TR DUBLAJ FILM",THRILLER 16 Blocks
http://xxx.xx:xx/xx/xx/632.mkv
#EXTINF:-1 tvg-id="" tvg-name="TRT BELGESEL HD 720" tvg-logo="http://url/trtb.png" group-title="TR BELGESEL",TRT BELGESEL 720
http://xxx.xx:xx/xx/xx/218
Ожидаемый результат:
#EXTINF:-1 tvg-id="" tvg-name="TRT HD 1080" tvg-logo="http://url/tr/trt.png" group-title="TR ULUSAL",TRT HD 1080
http://xxx.xx:xx/xx/xx/123
#EXTINF:-1 tvg-id="" tvg-name="TRT HD 720" tvg-logo="http://url/trt.png" group-title="TR ULUSAL",TRT HD 720
http://xxx.xx:xx/xx/xx/218
#EXTINF:-1 tvg-id="" tvg-name="CNN TURK 1080" tvg-logo="http://url/cnnturkhd.png" group-title="TR HABER",CNN TURK 1080
http://xxx.xx:xx/xx/xx/926
#EXTINF:-1 tvg-id="" tvg-name="TRT BELGESEL 720" tvg-logo="http://url/trtb.png" group-title="TR BELGESEL",TRT BELGESEL 720
http://xxx.xx:xx/xx/xx/218
Предположим, что файл называется inputfile
, а выходные данные должны храниться в outputfile
:
grep --no-group-separator -A 2 -E \
"group-title=\"TR ULUSAL\"|group-title=\"TR HABER\"|group-title=\"TR BELGESEL\"" \
inputfile > outputfile
Это работает с использованием расширенных регулярных выражений(-E
)и после -контекста(-A
).
В sed
вы бы использовали расширенное регулярное выражение с опцией-E
:
sed -E '/group-title="TR (ULUSAL|HABER|BELGESEL)"/!d;n;n'
()
вокруг ULUSAL|HABER|BELGESEL
убедитесь, что |
применяется только к рисункам внутри.
Строка без шаблона (и !
позади шаблона )удаляется. Все остальные строки (с шаблонами )выполняют n;n
, поэтому печатается сама строка, а также n
ext и после нее n
ext пустая строка.