我正在尝试将我的主机名从左侧剪切为两个“部分”。主机名如下所示:
servername-01.location.domain.com
或者
servername-01.location.test.domain.com
我需要将其削减为以下内容:
servername-01.location
由于某些域名的“后缀”较长,我确实需要将前两个“部分”一直到第二个“.”,但不包括第二个“.”。
我使用下面的命令从后面删除主机名,但后来意识到后缀的子域数量可能会改变,所以这不再有效:
${HOSTNAME%.*.*}
任何帮助,将不胜感激!
答案1
您可以使用
SHORTHOST=$(cut -d "." -f 1-2 <<< $HOSTNAME)
它将在每个周期将原始主机名切成字段.
并仅打印前两个。
答案2
事实上,很难通过一个参数扩展来删除这样的可变部分。但是有一种迂回的方法,我们可以先删除前两个段(我们实际上想保留它们),留下尾部,然后使用那作为要从原始字符串中删除的部分。
所以:
$ hostname=servername-01.location.test.domain.com
$ echo "${hostname%.${hostname#*.*.}}"
servername-01.location
(.${hostname#*.*.}
是.test.domain.com
然后${hostname%.test.domain.com}
是servername-01.location
。)