Frage

OS X verwendet, muß ich einen einzeiligen Bash-Skript auf einem Client-mac Hostnamen wie folgt aussehen: 12345-BA-PreSchool-LT.local

Wo die ersten 5 Ziffern ein Vermögenswert Seriennummer und die Bindestriche trennen, um einen Business Unit Code aus einem Abteilungsnamen durch so etwas wie ‚LT‘ gefolgt, einen Laptop zu bezeichnen.

Ich glaube, ich muss den Hostnamen ein Echo und eine Kombination von sed, awk verwenden und vielleicht Zeichen ausgeschnitten auszuziehen, mich zu verlassen mit:
"BA PreSchool"

Jede Hilfe sehr geschätzt. Das ist, was ich habe, so weit:

echo $HOSTNAME | sed 's/...\(...\)//' | sed 's/.local//'
War es hilfreich?

Lösung

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

(nicht auf OSX, so dass nicht sicher, ob Schnitt definiert)

Andere Tipps

Ich mag Dinge einfach halten:)

Sie können tun es mit nur geschnitten:

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

Wenn Sie den Bindestrich entfernen möchten, können Sie verwenden tr

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

Wie wäre es

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

Awk kann Ihre Frage leicht lösen.

echo "12345-BA-PreSchool-LT.local" | awk -F'-' '$0=$2" "$3'
BA PreSchool
bash$ string="12345-BA-PreSchool-LT.local"
bash$ IFS="-"
bash$ set -- $string
bash$ echo $2-$3
BA-PreSchool
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top