Extraire le texte du nom d'hôte
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//'
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