Extraer texto del nombre de host
Pregunta
Usando OS X, necesito un script bash de una línea para ver el nombre de host de un cliente mac como: 12345-BA-PreSchool-LT.local
Donde los primeros 5 dígitos son un número de serie del activo, y los guiones separan un código de unidad de negocio del nombre de un departamento seguido de algo como 'LT' para denotar una computadora portátil.
Supongo que necesito hacer eco del nombre de host y usar una combinación de sed, awk y quizás cortar para quitar caracteres para dejarme:
" BA Preescolar "
Cualquier ayuda muy apreciada. Esto es lo que tengo hasta ahora:
echo $HOSTNAME | sed 's/...\(...\)//' | sed 's/.local//'
Solución
echo "12345-BA-PreSchool-LT.local" | cut -d'-' -f2,3 | sed -e 's/-/ /g'
(No en OSX, así que no estoy seguro si el corte está definido)
Otros consejos
Me gusta mantener las cosas simples :)
Podrías hacerlo con solo cortar:
echo 12345-BA-PreSchool-LT.local | cut -d"-" -f2,3
BA-PreSchool
Si desea eliminar el guión, puede usar tr
echo 12345-BA-PreSchool-LT.local | cut -d"-" -f2,3 | tr "-" " "
BA PreSchool
¿Qué tal
echo $HOSTNAME | awk 'BEGIN { FS = "-" } ; { print $2, $3 }'
Awk puede resolver su pregunta fácilmente.
echo "12345-BA-PreSchool-LT.local" | awk -F'-' '<*>=$2" "$3'
BA PreSchool
bash$ string="12345-BA-PreSchool-LT.local"
bash$ IFS="-"
bash$ set -- $string
bash$ echo $2-$3
BA-PreSchool