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//'
È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top