Ответ 1
Вы можете использовать cut
:
echo "testsrv1.main.corp.loc.domain.com" | cut -d"." -f1
Я хотел бы извлечь первую часть этого имени хоста testsrv1
от testsrv1.main.corp.loc.domain.com
в UNIX, в оболочке script.
Какую команду я могу использовать? Это было бы до первого периода .
Вы можете использовать cut
:
echo "testsrv1.main.corp.loc.domain.com" | cut -d"." -f1
У вас есть имя сервера в переменной оболочки? Используете ли вы sh
-подобную оболочку? Если да,
${SERVERNAME%%.*}
сделает то, что вы хотите.
Чтобы построить ответ на пиккру, нет необходимости в новой переменной, просто используйте встроенный $HOSTANME.
echo $HOSTNAME-->my.server.domain
echo ${HOSTNAME%%.*}-->my
Протестировано на двух довольно разных Linux.
2.6.18-371.4.1.el5, GNU bash, версия 3.2.25 (1) -release (i386-redhat-linux-gnu) 3.4.76-65.111.amzn1.x86_64, GNU bash, версия 4.1.2 (1) -release (x86_64-redhat-linux-gnu)
попробуйте ключ -s: hostname -s
Я использую команды cut
, awk
, sed
или bash variables
Через вырезать
[[email protected] ~]$ echo "testsrv1.main.corp.loc.domain.com" | cut -d. -f1
testsrv1
[[email protected] ~]$
Через awk
[[email protected] ~]$ echo "testsrv1.main.corp.loc.domain.com" | awk -v FS='.' '{print $1}'
testsrv1
[[email protected] ~]$
Через sed
[[email protected] ~]$ echo "testsrv1.main.corp.loc.domain.com" | sed -r '[email protected]([^.]*).(.*)@\[email protected]'
testsrv1
[[email protected] ~]$
Через Bash Переменные
[[email protected] ~]$ hostName='testsrv1.main.corp.loc.domain.com'
[[email protected] ~]$ echo ${hostName%%.*}
testsrv1
[[email protected] ~]$
Вы могли бы использовать "uname -n", чтобы просто получить только имя хоста.