以下のように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
達成されます。