парсинг строки без "костыля"

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

парсинг строки без "костыля"

Непрочитанное сообщение Гость » 2017-04-20 19:46:41

Например есть вывод команды:

Код: Выделить всё

VBoxManage list vms
"test1" {07948657-eacf-44c8-987e-44d2708f1f13}
"external" {ce0855a2-3d41-4526-a1f6-d6c63f6bface}
"test2" {8326e080-d1df-4d6b-b074-010bb3bf553d}
"test" {03aeac0c-7e28-48a0-b088-10b793d6f108}

Если надо достать uid, то сделал в лоб:
VBoxManage list vms | awk '{ print $2 }' | awk -F { '{ print $2 }' | awk -F } '{ print $1 }'

Вроде все работает, но для общего развития - как-то можно что ли красивее достать этот uid без этого вот костыля?

Код: Выделить всё

| awk -F { '{ print $2 }' | awk -F } '{ print $1 }'
т.е. в общем виде как быстро извлечь uid из строки {07948657-eacf-44c8-987e-44d2708f1f13}?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2520 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1220
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

парсинг строки без "костыля"

Непрочитанное сообщение xM » 2017-04-21 0:23:45

Есть много старых добрых shell команд. К примеру, cut:

Код: Выделить всё

| cut -wf 2
Если надо убрать скобки, то добавляем после ещё одну старую добрую команду tr:

Код: Выделить всё

| tr -d "{}"
IT voodoo blog https://kostikov.co


BlitzKrieg
ст. прапорщик
Сообщения: 538
Зарегистрирован: 2008-03-13 12:02:59

парсинг строки без "костыля"

Непрочитанное сообщение BlitzKrieg » 2017-04-21 22:49:15

sed -n 's/.*\({.*}\)/\1/p'
sed -n 's/.*{\(.*\)}/\1/p'

Аватара пользователя
bagas
лейтенант
Сообщения: 914
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

парсинг строки без "костыля"

Непрочитанное сообщение bagas » 2017-04-27 9:02:44

А так?
awk -F "{|}" '{ print $2 }'
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.