Использование 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