【发布时间】:2012-03-07 17:42:34
【问题描述】:
我正在尝试使 sed 匹配 url 的最后一部分并输出。例如:
echo "http://randomurl/suburl/file.mp3" | sed (expression)
应该给出输出:
file.mp3
到目前为止,我已经尝试过sed 's|\([^/]+mp3\)$|\1|g',但它只输出整个网址。也许有些东西我在这里看不到,但无论如何,我们将不胜感激!
【问题讨论】:
我正在尝试使 sed 匹配 url 的最后一部分并输出。例如:
echo "http://randomurl/suburl/file.mp3" | sed (expression)
应该给出输出:
file.mp3
到目前为止,我已经尝试过sed 's|\([^/]+mp3\)$|\1|g',但它只输出整个网址。也许有些东西我在这里看不到,但无论如何,我们将不胜感激!
【问题讨论】:
这行得通:
echo "http://randomurl/suburl/file.mp3" | sed 's#.*/##'
【讨论】:
basename是你的好朋友。
> basename "http://randomurl/suburl/file.mp3"
=> file.mp3
【讨论】:
这应该可以完成工作:
$ 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
【讨论】:
echo 'http://randomurl/suburl/file.mp3' | grep -oP '[^/\n]+$'
这是另一个使用 grep 的解决方案。
【讨论】: