如何从 YouTube 订阅源文件中提取频道名称

如何从 YouTube 订阅源文件中提取频道名称

我有一个 YouTube 订阅的 html 源文件,想要将其中的/user/CHANNELNAME部分提取到一个单独的文件中。

源文件 ( browser > youtube.com > subscriptions > manage > Ctrl+U) 将这些信息分为如下几个部分:

"url":"/user/CHANNELNAME","webPageType":"WEB_PAGE_TYPE_CHANNEL","rootVe":3611,"apiUrl":"/youtubei/v1/browse"

我尝试使用 grep -o 来提取该/user/CHANNELNAME部分,但我的尝试总是违反贪婪的 *。

$ grep -o '/user/.*"' source

grep 匹配的结果:

/用户/CHANNELNAME”,“webPageType”:“WEB_PAGE_TYPE_CHANNEL”,“rootVe”:3611,“apiUrl”:“/youtubei/v1/browse”

或者:

$ grep -o '/user/.*,' source

grep 匹配的结果相同:

/用户/CHANNELNAME”,“webPageType”:“WEB_PAGE_TYPE_CHANNEL”,“rootVe”:3611,“apiUrl”:“/youtubei/v1/browse”

如何让 grep 在第一个",

答案1

您想要的文本似乎在双引号内,如果始终如此,则不要匹配任何字符(.),而是尝试匹配双引号以外的任何字符:

grep -o '/user/[^"]*' source

反转^匹配。假设始终有一个逗号,[^",]如果某些频道名称没有被双引号括起来,则可以使用

如果你只是在寻找 /user/ 之后的部分,你可以使用-Pgrep 的开关来删除 /user/ 部分但仍然匹配它:

grep -oP '(?<=/user/)[^",]*' source

相关内容