Unix для извлечения части имени хоста

Я хотел бы извлечь первую часть этого имени хоста testsrv1  от testsrv1.main.corp.loc.domain.com в UNIX, в оболочке script.

Какую команду я могу использовать? Это было бы до первого периода .

Ответы

Ответ 1

Вы можете использовать cut:

echo "testsrv1.main.corp.loc.domain.com" | cut -d"." -f1

Ответ 2

У вас есть имя сервера в переменной оболочки? Используете ли вы sh -подобную оболочку? Если да,

${SERVERNAME%%.*}

сделает то, что вы хотите.

Ответ 3

Чтобы построить ответ на пиккру, нет необходимости в новой переменной, просто используйте встроенный $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)

Ответ 4

попробуйте ключ -s: hostname -s

Ответ 5

Я использую команды 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] ~]$

Ответ 6

Вы могли бы использовать "uname -n", чтобы просто получить только имя хоста.