【问题标题】:Using sed and regex to capture last part of url使用 sed 和正则表达式捕获 url 的最后一部分
【发布时间】:2012-03-07 17:42:34
【问题描述】:

我正在尝试使 sed 匹配 url 的最后一部分并输出。例如:

echo "http://randomurl/suburl/file.mp3" | sed (expression)

应该给出输出:

file.mp3

到目前为止,我已经尝试过sed 's|\([^/]+mp3\)$|\1|g',但它只输出整个网址。也许有些东西我在这里看不到,但无论如何,我们将不胜感激!

【问题讨论】:

    标签: regex linux bash


    【解决方案1】:

    这行得通:

     echo "http://randomurl/suburl/file.mp3" | sed 's#.*/##'
    

    【讨论】:

    • 你能详细说明它的作用吗?
    【解决方案2】:

    basename是你的好朋友。

    > basename "http://randomurl/suburl/file.mp3"
    => file.mp3
    

    【讨论】:

      【解决方案3】:

      这应该可以完成工作:

      $ echo "http://randomurl/suburl/file.mp3" | sed -r 's|.*/(.*)$|\1|'
      file.mp3
      

      地点:

      • 使用| 代替/ 来分隔s 命令的参数。
      • 如果在最后一个 / 之后找到,则所有内容都匹配并替换为任何内容。

      编辑:您也可以使用 bash parameter substitution 功能:

      $ url="http://randomurl/suburl/file.mp3"
      $ echo ${url##*/}
      file.mp3
      

      【讨论】:

        【解决方案4】:
        echo 'http://randomurl/suburl/file.mp3' | grep -oP '[^/\n]+$'
        

        这是另一个使用 grep 的解决方案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-18
          • 2022-01-12
          • 2016-08-05
          • 2022-11-23
          • 2012-10-19
          • 2018-05-17
          • 2010-09-06
          • 2015-02-20
          相关资源
          最近更新 更多