【发布时间】:2021-06-05 03:15:24
【问题描述】:
我有这样提供的 m3u 列表:
#EXTM3U
#EXTINF:0 tvg-id="Channel 1" tvg-name="Channel 1" tvg-logo="http://host/logo/logo1.png" timeshift="5" catchup="default" catchup-source="http://1.1.1.1/325/mono-{utc}-{lutc}.m3u8?token=secret" group-title="Group" ,13 Channel 1
http://2.2.2.2/325/video.m3u8?token=secret
#EXTINF:0 tvg-id="Channel 2" tvg-name="Channel 2" tvg-logo="http://host/logo/logo2.png" timeshift="5" catchup="default" catchup-source="http://1.1.1.1/324/mono-{utc}-{lutc}.m3u8?token=secret" group-title="Group" ,Channel 2
http://2.2.2.2/324/video.m3u8?token=secret
#EXTINF:0 tvg-id="Channel 3" tvg-name="Channel 3" tvg-logo="http://host/logo/logo3.png" timeshift="5" catchup="default" catchup-source="http://1.1.1.1/323/mono-{utc}-{lutc}.m3u8?token=secret" group-title="Group" ,Channel 3
http://2.2.2.2/323/video.m3u8?token=secret
我想将 catchup 类型更改为 fs 并删除所有 catchup-source 标签,所以结果应该是:
#EXTM3U
#EXTINF:0 tvg-id="Channel 1" tvg-name="Channel 1" tvg-logo="http://host/logo/logo1.png" timeshift="5" catchup="fs" group-title="Group" ,13 Channel 1
http://2.2.2.2/325/video.m3u8?token=secret
#EXTINF:0 tvg-id="Channel 2" tvg-name="Channel 2" tvg-logo="http://host/logo/logo2.png" timeshift="5" catchup="fs" group-title="Group" ,Channel 2
http://2.2.2.2/324/video.m3u8?token=secret
#EXTINF:0 tvg-id="Channel 3" tvg-name="Channel 3" tvg-logo="http://host/logo/logo3.png" timeshift="5" catchup="fs" group-title="Group" ,Channel 3
http://2.2.2.2/323/video.m3u8?token=secret
如何在 bash 中做到这一点?我尝试了 sed,但没有成功,您能指出正确的方向吗?
要删除任何特定的子字符串,我可以像这样使用 sed:
sed '/text to remove/d' ./file
在我的情况下,要删除的字符串在 catchup="default" 和 group-title= 之间是不同的,并得到我发布的结果。
【问题讨论】:
-
请edit您的问题向我们展示您的尝试:)
-
其实我知道怎么用sed去掉特定的子串,但是不知道怎么去掉2个词之间的各种子串,所以我的情况比较复杂
-
没关系!如果我们的代码完美运行,我们就不会在这里 :)
-
我编辑了问题。不幸的是,我不知道如何得到我想要的