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