Estrai il testo dal nome host
Domanda
Usando OS X, ho bisogno di uno script bash a una riga per guardare un nome host mac client come: 12345-BA-prescolare LT.local
Dove le prime 5 cifre sono un numero di serie dell'asset e i trattini separano un codice di business unit dal nome di un reparto seguito da qualcosa come "LT" per indicare un laptop.
Suppongo di dover fare eco al nome host e usare una combinazione di sed, awk e forse tagliare per eliminare i caratteri per lasciarmi con:
" BA PreSchool "
Qualsiasi aiuto molto apprezzato. Questo è quello che ho finora:
echo $HOSTNAME | sed 's/...\(...\)//' | sed 's/.local//'
Soluzione
echo "12345-BA-PreSchool-LT.local" | cut -d'-' -f2,3 | sed -e 's/-/ /g'
(Non su OSX, quindi non sono sicuro se il taglio è definito)
Altri suggerimenti
Mi piace mantenere le cose semplici :)
Potresti farlo con un semplice taglio:
echo 12345-BA-PreSchool-LT.local | cut -d"-" -f2,3
BA-PreSchool
Se vuoi rimuovere il trattino puoi usare tr
echo 12345-BA-PreSchool-LT.local | cut -d"-" -f2,3 | tr "-" " "
BA PreSchool
Che ne dici
echo $HOSTNAME | awk 'BEGIN { FS = "-" } ; { print $2, $3 }'
Awk può risolvere facilmente la tua domanda.
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