【问题标题】:How do i extract some particular words from each line?我如何从每一行中提取一些特定的单词?
【发布时间】:2020-10-08 00:17:11
【问题描述】:

文本文件有很多这样的行,我想提取 /videos 直到 .mp4 和最后一个数字(以粗体显示)和将每个过滤后的行输出到单独的文件中

https://videos-a.jwpsrv.com/content/conversions/7kHOkkQa/videos/**S4KWZTyt-32313922.mp4**.m3u8?hdnts=exp=1592315851~acl=*/S4KWZTyt-32313922.mp4.m3u8~hmac=83f4674e6bf2576b070c716a3196cb6a30f35737827ee69c8cf7e0c57a196e51 **1** 

比如说文本文件的内容是 ..

https://videos-a.jwpsrv.com/content/conversions/7kHOkkQa/videos/JajSfbVN-32313922.mp4.m3u8?hdnts=exp=1592315891~acl=*/JajSfbVN-32313922.mp4.m3u8~hmac=d3ca7bd5b233a531cfe242d17d2ea0c0167b41b90fff6459e433700ffc969d69 19

https://videos-a.jwpsrv.com/content/conversions/7kHOkkQa/videos/Qs3xZqcv-32313922.mp4.m3u8?hdnts=exp=1592315940~acl=*/Qs3xZqcv-32313922.mp4.m3u8~hmac=c30e2082bf748a6b4d1621c1d33a95319baa61798775e9da8856041951cf5233 20

输出应该是

JajSfbVN-32313922.mp4 19
Qs3xZqcv-32313922.mp4 20

【问题讨论】:

  • 我建议不要使用正则表达式,而是使用您选择的语言将 URL 解析为其组件。

标签: regex linux awk sed grep


【解决方案1】:

建议的正则表达式可能是一个更好的解决方案,但我会留下一个 Python 解决方案,它将每个过滤的行写入一个单独的文件中。如果文件中的每一行都是这样,则此脚本有效。

with open("my_file.txt","r") as FILE:
    lines=FILE.readlines()
    for line in lines:
        num=line.split(" ")[1]
        newline=line.split("videos")[2]
        newline=newline[1:]
        new=newline.split(".")[0:2]
        with open(new[0],"w") as f:
            f.write(new[0]+"."+new[1]+" "+num.strip())
            f.close

【讨论】:

    【解决方案2】:

    你可以试试下面的正则表达式:

    .*\/videos\/(.*?mp4).*?(?<= )(\d+)
    

    上述正则表达式的解释:

    .* - 匹配\videos之前的所有内容。

    \/videos\/ - 从字面上匹配视频。

    (.*?mp4) - 代表一个捕获组懒惰地匹配mp4之前的所有内容。

    .*? - 贪婪地匹配数字出现之前的所有内容。

    (\d+) - 代表第二个捕获组,根据您的要求匹配末尾的数字。

    你可以在here.找到上述正则表达式的demo


    linux中的命令行实现:

    cat regea.txt | perl -ne 'print "$1 $2\n" while /.*\/videos\/(.*?mp4).*?(?<= )(\d+)/g;'> out.txt
    

    您可以在here.中找到上述命令的示例实现

    【讨论】:

      猜你喜欢
      • 2012-02-05
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多