Вопрос

В OS X мне нужен однострочный сценарий bash для просмотра имени хоста mac клиента: 12345-BA-ДОШКОЛЬНОЕ-LT.local

Если первые 5 цифр являются серийным номером актива, а дефисы отделяют код подразделения от названия отдела, за которым следует что-то вроде «LT» для обозначения ноутбука.

Полагаю, мне нужно повторить имя хоста и использовать комбинацию sed, awk и, возможно, вырезать, чтобы убрать символы, чтобы оставить меня:
" BA PreSchool "

Любая помощь высоко ценится. Это то, что я до сих пор:

echo $HOSTNAME | sed 's/...\(...\)//' | sed 's/.local//'
Это было полезно?

Решение

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

(Не в OSX, поэтому не уверен, определен ли cut)

Другие советы

Мне нравится быть проще:)

Вы можете сделать это с помощью просто вырезать:

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

Если вы хотите удалить дефис, вы можете использовать tr

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

Как насчет

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

Awk может легко решить ваш вопрос.

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top