内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我图使用sed来清理URL行
因此:
http://www.suepearson.co.uk/product/174/71/3816/
我要:
我试过:
sed 's|\(http:\/\/.*?\/\).*|\1|'
和
sed 's|\(http:\/\/.*\?\/\).*|\1|'
但是我似乎不能让Non greedy的量词工作,所以它总是匹配整个字符串。
sed
当然有它的地位,但这不是他们中的一个!
正如Dee所指出的:只要使用cut
在这种情况下,它要简单得多,也要安全得多。下面是一个使用Bash语法从URL中提取各种组件的示例:
url="http://www.suepearson.co.uk/product/174/71/3816/" protocol=$(echo "$url" | cut -d':' -f1) host=$(echo "$url" | cut -d'/' -f3) urlhost=$(echo "$url" | cut -d'/' -f1-3) urlpath=$(echo "$url" | cut -d'/' -f4-)
给你:
protocol = "http" host = "www.suepearson.co.uk" urlhost = "http://www.suepearson.co.uk" urlpath = "product/174/71/3816/"
正如你所看到的,这是一个更灵活的方法。