使用bash删除子域

时间:2014-08-08 13:02:13

标签: bash awk sed

假设我有一个名为$subdomain的变量,其中包含test.google.com。如何删除子域以获取google.com并将其存储在名为$ maindomain的变量中。

3 个答案:

答案 0 :(得分:5)

一个子域名

maindomain=${subdomain#*.}  

包含更多子域名

maindomain=$(sed 's/.*\.\(.*\..*\)/\1/' <<< $subdomain)

删除URI(如果有)

maindomain=$(sed 's/.*\.\(.*\..*\)/\1/' <<< ${subdomain%/*})

答案 1 :(得分:4)

maindomain=${subdomain#[[:alpha:]]*.}

将删除“测试”。或者在第一点之前的任何其他类似的前缀。

更好的回答,因为我们可以有多个子子域:

maindomain=$(expr match "$subdomain" '.*\.\(.*\..*\)')

它只保留域的尾随xxxxxx.xxx部分。

答案 2 :(得分:1)

> subdomain=1.2.3.4.5
> IFS=. read -ra __ <<< "$subdomain"
> IFS=. eval 'maindomain="${__[*]:(-2)}"'
> echo "$maindomain"
4.5

另:

> IFS=. read -ra __ <<< "$subdomain"
> IFS=. eval 'maindomain="${__[*]:(-3)}"'
> echo "$maindomain"
3.4.5