Использование awk
$ echo foo.mydomain.xyz | awk -F. '{print $1}'
foo
awk получает свои данные через "записи" (по умолчанию это строки), и каждая запись делится на "поля". По умолчанию поля разделены пробелами. Здесь мы изменим значение по умолчанию, чтобы разделитель полей был точкой. В данном примере это означает, что первое поле - это foo
, второе - это mydomain
, а третье - xyz
. Мы говорим, чтобы awk печатал только первое поле, foo
.
Чтобы записать короткое имя в переменную оболочки:
shortname=$(hostname | awk -F. '{print $1}')
Используя sed
Эту проблему также можно решить с помощью sed
:
$ echo foo.mydomain.xyz | sed 's/\..*//'
foo
Здесь команда подстановки s/\..*//
просто ищет период и удаляет период и все, что следует за ним.
Использование оболочки
$ name=foo.mydomain.xyz
$ name=${name%%.*}
$ echo $name
foo