Usando awk
$ echo foo.mydomain.xyz | awk -F. '{print $1}'
foo
o awk obtém sua entrada por "registros" (cujo padrão é linhas) e cada registro é dividido em "campos". Por padrão, os campos são separados por espaços em branco. Aqui, alteramos o padrão para que o separador de campo seja um período. Para este exemplo, isso significa que o primeiro campo é foo , o segundo é mydomain e o terceiro é xyz . Dizemos ao awk para imprimir apenas o primeiro campo, foo .
Para capturar o nome abreviado para uma variável de shell:
shortname=$(hostname | awk -F. '{print $1}')
Usando sed
Esse problema também pode ser resolvido com sed :
$ echo foo.mydomain.xyz | sed 's/\..*//'
foo
Aqui, o comando de substituição, s/\..*// , simplesmente procura por um período e remove o período e tudo o que se segue.
Usando o shell
$ name=foo.mydomain.xyz
$ name=${name%%.*}
$ echo $name
foo