Извлечь текст из имени хоста - PullRequest
1 голос
/ 31 июля 2009

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

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

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

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

echo $HOSTNAME | sed 's/...\(...\)//' | sed 's/.local//'

Ответы [ 5 ]

4 голосов
/ 31 июля 2009
 echo "12345-BA-PreSchool-LT.local" | cut -d'-' -f2,3 | sed -e 's/-/ /g'

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

3 голосов
/ 31 июля 2009

Как насчет

echo $HOSTNAME | awk 'BEGIN { FS = "-" } ; { print $2, $3 }'
3 голосов
/ 31 июля 2009

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

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

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
0 голосов
/ 06 марта 2010
bash$ string="12345-BA-PreSchool-LT.local"
bash$ IFS="-"
bash$ set -- $string
bash$ echo $2-$3
BA-PreSchool
0 голосов
/ 01 августа 2009

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

echo "12345-BA-PreSchool-LT.local" | awk -F'-' '$0=$2" "$3'
BA PreSchool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...