Extrair texto de hostname
Pergunta
Usando OS X, eu preciso de um script uma linha de olhar para um hostname mac cliente como: 12345-BA-PreSchool-LT.local
Onde os 5 primeiros dígitos são um número de série de ativos, e os hífens separar um código de unidade de negócios a partir de um nome de departamento seguido por algo como 'LT' para denotar um laptop.
Eu acho que preciso para ecoar o nome do host e usar uma combinação de sed, awk e talvez cortado para remover caracteres para me deixar com:
"BA PreSchool"
Qualquer ajuda muito apreciada. Isto é o que eu tenho até agora:
echo $HOSTNAME | sed 's/...\(...\)//' | sed 's/.local//'
Solução
echo "12345-BA-PreSchool-LT.local" | cut -d'-' -f2,3 | sed -e 's/-/ /g'
(Não em OSX, então não tenho certeza se corte é definido)
Outras dicas
Eu gosto de manter as coisas simples:)
Você poderia fazê-lo com apenas corte:
echo 12345-BA-PreSchool-LT.local | cut -d"-" -f2,3
BA-PreSchool
Se você quiser remover o hífen você pode usar tr
echo 12345-BA-PreSchool-LT.local | cut -d"-" -f2,3 | tr "-" " "
BA PreSchool
Como cerca
echo $HOSTNAME | awk 'BEGIN { FS = "-" } ; { print $2, $3 }'
Awk pode resolver a sua pergunta com facilidade.
echo "12345-BA-PreSchool-LT.local" | awk -F'-' '$0=$2" "$3'
BA PreSchool
bash$ string="12345-BA-PreSchool-LT.local"
bash$ IFS="-"
bash$ set -- $string
bash$ echo $2-$3
BA-PreSchool