在第三级之后修剪URL

时间:2013-09-27 21:34:01

标签: shell unix sed

我需要在第三个/之后修剪网址。我从头开始删除 http 以使其更容易。

示例:

a.ssl.fastly.net/static/r07/auth014.js
0.tqn.com/f/f/a/a.ttf?v=3.0.1

这应该返回

a.ssl.fastly.net/static/r07
0.tqn.com/f/f

我试过

echo "0.tqn.com/f/f/a/a.ttf?v=3.0.1" | sed 's/.*[\/].*[\/].*[\/].*/\1/'

但它似乎不起作用并抛出错误:

sed: -e expression #1, char 26: invalid reference \1 on `s' command's RHS

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:3)

您也可以使用cut

cut -d/ -f1-3

示例:

$ echo "0.tqn.com/f/f/a/a.ttf?v=3.0.1" | cut -d/ -f1-3
0.tqn.com/f/f

答案 1 :(得分:2)

您可以使用/作为分隔符并使用awk打印:

awk -F/ '{print $1"/"$2"/"$3}' file

答案 2 :(得分:1)

这可能适合你(GNU sed):

sed 's|/[^/]*||3g' file

使用|作为替换命令的分隔符,从第3次出现到行尾删除/后跟任意数量的非/

答案 3 :(得分:0)

删除最后一个字段:

awk -F/ '{$NF=""}1' OFS=/
a.ssl.fastly.net/static/r07/
0.tqn.com/f/f/a/