我想让sed匹配url的最后部分并输出。例如:使用sed和正则表达式来捕获url的最后部分
echo "http://randomurl/suburl/file.mp3" | sed (expression)
应该给输出:
file.mp3
到目前为止,我已经试过sed 's|\([^/]+mp3\)$|\1|g'
,但它只是输出整个URL。也许有什么我不在这里看到,但无论如何,帮助将不胜感激!
我想让sed匹配url的最后部分并输出。例如:使用sed和正则表达式来捕获url的最后部分
echo "http://randomurl/suburl/file.mp3" | sed (expression)
应该给输出:
file.mp3
到目前为止,我已经试过sed 's|\([^/]+mp3\)$|\1|g'
,但它只是输出整个URL。也许有什么我不在这里看到,但无论如何,帮助将不胜感激!
这个工程:
echo "http://randomurl/suburl/file.mp3" | sed 's#.*/##'
这应该做的工作:
$ 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
basename
是你的好朋友。
> basename "http://randomurl/suburl/file.mp3"
=> file.mp3
这真的很有用,谢谢:) – glindste 2012-03-07 17:56:12
echo 'http://randomurl/suburl/file.mp3' | grep -oP '[^/\n]+$'
下面是使用grep
另一种解决方案。
谢谢!这解决了它:) – glindste 2012-03-07 17:45:52
你能详细说明它的功能吗? – nass 2015-04-23 15:45:27