Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Помогите со скриптом sed  (Прочитано 936 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Swa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Помогите со скриптом sed
« : 12 Сентября 2009, 22:50:29 »
Здравствуйте. Помогите написать скрипт для sed.
Имеется строка вида
<a><b>qqq</b><g><f><b>rrr</b></f></g></a> Нужно вывести на экран всё, что в тегах <b></b>, то есть нужно вывести:
qqq
rrr
Причём вне тегов <b>может быть любое количество любых других тегов и символов, и самих тегов <b> может быть несколько.
Пробовал так
sed 's/\(.*<b>\)\([^<]*\)\(<\/b>.*\)/\2/g' ~/1, но он выдаёт только rrr и затирает qqq.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите со скриптом sed
« Ответ #1 : 12 Сентября 2009, 23:23:37 »
$ echo '<a><b>qqq</b><g><f><b>rrr</b></f></g></a>' | grep -o '<b>[^<]*</b>' | sed 's/<\/*b>//g'
qqq
rrr
Не слишком изящно, но главное, действенно. ;)
« Последнее редактирование: 12 Сентября 2009, 23:43:25 от ArcFi »

Оффлайн Swa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Re: Помогите со скриптом sed
« Ответ #2 : 13 Сентября 2009, 01:05:54 »
Да, спасибо, это работает. Но возник ещё вопрос: как быть, если в теге <b> есть ещё один вложенный <b>?
<a><b>qq<b>q</b></b><g><f><b>rrr</b></f></g></a>Хочу получить:
qq<b>q</b>
rrr
Ведь выражение [^<]* ищет любой текст, за исключением "<", а в этом случае оно не работает.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите со скриптом sed
« Ответ #3 : 13 Сентября 2009, 02:55:43 »
Swa, м.б. стоит поглядеть готовые решения:
http://www.google.ru/search?q=parse+html|xml
« Последнее редактирование: 13 Сентября 2009, 02:57:31 от ArcFi »

Оффлайн Swa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Re: Помогите со скриптом sed
« Ответ #4 : 13 Сентября 2009, 21:41:02 »
Ладно, спасибо за помощь.

 

Страница сгенерирована за 0.063 секунд. Запросов: 25.