使用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地址,并且只会删除第一个之前的所有内容首先
。