아래와 같이 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
답변1
sed
옵션과 함께 확장 정규식을 사용 합니다 -E
.
sed -E '/group-title="TR (ULUSAL|HABER|BELGESEL)"/!d;n;n'
()
서라운드가 내부 패턴에만 ULUSAL|HABER|BELGESEL
적용되는지 확인하세요.|
!
패턴이 없는 라인(패턴을 따르는 라인)은 삭제됩니다. 다른 모든 줄(패턴이 있는 줄)이 실행되므로 n;n
줄 자체가 인쇄됩니다. n
ext 줄 n
다음에 빈 줄이 따라옵니다.
답변2
파일이 호출되고 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
달성됩니다 .