Question

Sous OS X, j’ai besoin d’un script bash d’une ligne pour rechercher un nom d’hôte mac client, tel que: 12345-BA-PreSchool-LT.local

Les 5 premiers chiffres représentent un numéro de série d'actif et les traits d'union séparent le code de l'unité commerciale du nom du département suivi de "LT" pour désigner un ordinateur portable.

Je suppose que je dois faire écho au nom d'hôte et utiliser une combinaison de sed, awk et peut-être coupé pour supprimer les caractères et me laisser avec:
"BA PreSchool"

Toute aide très appréciée. C’est ce que j’ai jusqu’à présent:

echo $HOSTNAME | sed 's/...\(...\)//' | sed 's/.local//'
Était-ce utile?

La solution

 echo "12345-BA-PreSchool-LT.local" | cut -d'-' -f2,3 | sed -e 's/-/ /g'

(Pas sous OSX, donc vous ne savez pas si couper est défini)

Autres conseils

J'aime garder les choses simples:)

Vous pouvez le faire avec juste couper:

echo 12345-BA-PreSchool-LT.local | cut -d"-" -f2,3
BA-PreSchool

Si vous souhaitez supprimer le trait d'union, vous pouvez utiliser tr

echo 12345-BA-PreSchool-LT.local | cut -d"-" -f2,3 | tr "-" " "
BA PreSchool

Que diriez-vous de

echo $HOSTNAME | awk 'BEGIN { FS = "-" } ; { print $2, $3 }'

Awk peut résoudre facilement votre question.

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top