Страница 1 из 1

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

Добавлено: 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}?

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

Добавлено: 2017-04-21 0:23:45
xM
Есть много старых добрых shell команд. К примеру, cut:

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

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

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

| tr -d "{}"

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

Добавлено: 2017-04-21 6:51:34
Гость
спасибо

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

Добавлено: 2017-04-21 22:49:15
BlitzKrieg
sed -n 's/.*\({.*}\)/\1/p'
sed -n 's/.*{\(.*\)}/\1/p'

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

Добавлено: 2017-04-27 9:02:44
bagas
А так?
awk -F "{|}" '{ print $2 }'