给出以下URL:
http://www.example.com/path1/path2/page
是否有一种简单的方法可以使用正则表达式提取前三个块,即:
http://www.example.com/path1/path2
我已经找到了一些如何用一些编码(perl / javascript)做的例子但是如果有人指出我使用正则表达式来做sed / awk示例,我真的很感激。 感谢
答案 0 :(得分:2)
解决方案1: 使用简单的参数扩展。
echo "${val%/*}"
解决方案第二: 与awk
。
echo "$val" | awk 'match($0,/.*\//){print substr($0,RSTART,RLENGTH-1)}'
解决方案3: 再增加一个awk
。
echo "$val" | awk -F"/" 'NF--;1' OFS="/"
解决方案第四: 使用sed
。
echo "$val" | sed 's/\(.*\/\).*/\1/;s/\/$//'
答案 1 :(得分:1)
使用正则表达式使用Bash正则表达式提取前三个块(而不是删除最后一个块):
$ [[ "$var" =~ ^(https?://)?([^/]+/){0,3} ]] && echo $BASH_REMATCH
http://www.example.com/path1/path2/
说明:
^(https?://)?
不要担心([^/]+/){0,3}
与输出匹配的0到3个块它支持例如:
$ var=https://www.example.com/path1/path2/page
https://www.example.com/path1/path2/
$ var=www.example.com/path1/path2/page
www.example.com/path1/path2/
$ var=www.example.com/path1/
www.example.com/path1/