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//'
¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top