我正在尝试将sed匹配到url的最后一部分并输出。例如:
echo "http://randomurl/suburl/file.mp3" | sed (expression)
应该给出输出:
file.mp3
到目前为止,我已尝试sed 's|\([^/]+mp3\)$|\1|g'
,但它只输出整个网址。也许有些东西我在这里看不到,但无论如何,帮助将非常感激!
答案 0 :(得分:13)
这有效:
echo "http://randomurl/suburl/file.mp3" | sed 's#.*/##'
答案 1 :(得分:7)
basename
是你的好朋友。
> basename "http://randomurl/suburl/file.mp3"
=> file.mp3
答案 2 :(得分: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
答案 3 :(得分:2)
echo 'http://randomurl/suburl/file.mp3' | grep -oP '[^/\n]+$'
以下是使用grep
的另一种解决方案。