Извлечь текст из имени хоста
Вопрос
В 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