我有这样的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
我希望将追赶类型更改为fs并删除所有追赶源标记,因此结果应该是:
#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
在巴什怎么做?我试过了,但没有成功,你能给我指明正确的方向吗?
要删除任何特定的子字符串,我可以这样使用sed:
sed '/text to remove/d' ./file
在我的例子中,要删除的字符串是不同的,在catchup="default"
和group-title=
之间,和我发布的结果之间。
发布于 2021-03-06 20:28:08
你已经走到一半了。
sed -i.bak -E -e 's/catchup="default" /catchup="fs" /g;s/catchup-source=[^ ]+ //g' file
使用搜索和替换部分字符串s/MATCH/REPLACEMENT/
是您所需要的(而不是删除匹配的行/MATCH/d
)。
因此,我们搜索catchup="default"
的每一个字面出现,并用nothing //g
替换它(从技术上讲,g
不需要,因为应该只有一个catchup=
) s/catchup="default" //g
,然后对catchup-source=[^ ]+
做同样的操作(catchup-source=
后面是一个空格,后面是空格[^ ]+
)。好了。
我们这样做是作为一个婴儿替代-i
,并告诉它创建一个备份版本的-i.bak
。
https://stackoverflow.com/questions/66509513
复制相似问题