使用bash删除子域

使用bash删除子域,bash,awk,sed,Bash,Awk,Sed,假设我有一个名为$subdomain的变量,其中包含test.google.com。如何剥离该子域以获取google.com,并将其存储在名为$maindomain的变量中。一个子域 maindomain=${subdomain#*.} 有更多的子域 maindomain=$(sed 's/.*\.\(.*\..*\)/\1/' <<< $subdomain) maindomain=$(sed's/*\.\(.*\..*\)/\1/'一个子域 maindomain=${

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

一个子域

maindomain=${subdomain#*.}  
有更多的子域

maindomain=$(sed 's/.*\.\(.*\..*\)/\1/' <<< $subdomain)
maindomain=$(sed's/*\.\(.*\..*\)/\1/'一个子域

maindomain=${subdomain#*.}  
有更多的子域

maindomain=$(sed 's/.*\.\(.*\..*\)/\1/' <<< $subdomain)
maindomain=$(sed's/*\.\(.*\..*\)/\1/'
将删除第一个点之前的“test.”或任何其他类似前缀

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

maindomain=$(expr match "$subdomain" '.*\.\(.*\..*\)')
它只保留域的尾部
xxxxxx.xxx
部分

> subdomain=1.2.3.4.5
> IFS=. read -ra __ <<< "$subdomain"
> IFS=. eval 'maindomain="${__[*]:(-2)}"'
> echo "$maindomain"
4.5
将删除第一个点之前的“test.”或任何其他类似前缀

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

maindomain=$(expr match "$subdomain" '.*\.\(.*\..*\)')
它只保留域的尾部
xxxxxx.xxx
部分。

>subdomain=1.2.3.4.5
> subdomain=1.2.3.4.5
> IFS=. read -ra __ <<< "$subdomain"
> IFS=. eval 'maindomain="${__[*]:(-2)}"'
> echo "$maindomain"
4.5
>IFS=.read-ra _uuuecho“$main域” 4.5
另一个:

> IFS=. read -ra __ <<< "$subdomain"
> IFS=. eval 'maindomain="${__[*]:(-3)}"'
> echo "$maindomain"
3.4.5
>IFS=.read-ra\uuuecho“$main域”
3.4.5
>子域=1.2.3.4.5
>IFS=.read-ra _uuuecho“$main域”
4.5
另一个:

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

这取决于您愿意做出什么样的假设。您是否特别希望删除
测试。
maindomain=“${subdomain#test.}”
,或者删除之前的第一部分并包括
maindomain=${subdomain}
?您试图做的事情的范围是什么?请指出更多可能的情况:如果
google.com
单独做会怎么样?如果
hello.google.co.uk
,如果…?这取决于您愿意做出什么样的假设。您是否特别想要删除
测试。
main域=“${subdomain#test}”
,或包含
main域=${subdomain}的第一部分
?您试图做的事情的范围是什么?请指出更多可能的情况:如果
google.com
单独做会怎么样?如果
hello.google.co.uk
,如果…?对于这个特定的情况,是的。但是,我假设可能还有更多。@TomFenech将以OP指定的格式适用于任何情况,没有URI。所以应该适用于任何有效的web地址,并且只会删除第一个
之前的所有内容。对于这种特殊情况,是的。但是,我假设可能还有更多内容。@TomFenech将适用于任何情况,没有URI,以OP指定的格式。因此,应该适用于任何有效的web地址,并且只会删除第一个
之前的所有内容首先