Regexp на выбор URL (Решено)

Убился. Есть файл, куча текста. Задача казалось бы проста - выбрать URL
echo Вай-вай картинка {img}http://olegon.ru/empty.gif{/img} vs {img}http://olegon.ru/empty.gif{/img} the end| sed -e 's/^.*\{img\}\(.*\)\{\/img\}.*/\1/g'
и что-то я буксую :( суть проблемы в том, что в строке может быть несколько URL. По моему шаблону же выбирается только один...
P.S. там не {}, а квадратные скобки...

P.P.S. Решил так:
| tr "[]" "<>" | sed -e 's/<\/img>/<\/img>\n/gi' | sed -n -e 's/.*\(.*\)<\/img>.*/\1/pi'

Можно определить свой

Можно определить свой разделитель строк, вроде даже можно как "/img" задать

Может, тогда `grep -o`?

Может, тогда `grep -o`?

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

оно как-то странно работает,

оно как-то странно работает, если тегов несколько, то берет первый открывающий и последний закрывающий

А нужны нежадные регвыры

А нужны нежадные регвыры (non-greedy regexp)

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Я не великий знаток, но можно

Я не великий знаток, но можно попробовать:

'echo Вай-вай картинка [_img]http://olegon.ru/empty.gif[/img] vs [_img]http://olegon.ru/empty1.gif[/img] the end| sed 's/ /\n/g'|grep "[img]"|sed -e 's/^.*\[img\]\(.*\)\[\/img\].*/\1/g''

Правда если между тегами будут пробелы, случится нежданчик.

Если еще интересно,

Если еще интересно, доработал, чтоб пробелы не мешали:

echo Вай-вай картинка [_img]http://olegon.ru/empty.gif[/img]vs[_img]http://olegon.ru/empty1.gif[/img] the end| sed 's/\[img\]/\n\[img\]/g'|grep "[img]"|sed -e 's/^.*\[img\]\(.*\)\[\/img\].*/\1/g'

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".