我需要在第三个/
之后修剪网址。我从头开始删除 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
任何人都可以帮助我吗?
答案 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/