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


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

Автор Тема: [РЕШЕНО] Удаление части текста, при помощи sed  (Прочитано 2490 раз)

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

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Нужно удалить все что находиться между { и }, а затем и сами { и }.
Количество знаков между { и } не известно.  
Как это реализовать?
« Последнее редактирование: 15 Март 2011, 20:49:11 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Удаление части текста, при помощи sed
« Ответ #1 : 01 Март 2011, 20:28:07 »
$ echo 'Нужно удалить все что находиться между { и }, а затем и сами { и }.
Количество знаков между { и } не известно.
Как это реализовать?' | sed 's/{[^}]*}//g;s/что находиться/что находится/g'
Нужно удалить все что находится между , а затем и сами .
Количество знаков между  не известно.
Как это реализовать?
« Последнее редактирование: 01 Март 2011, 20:35:20 от arcfi »

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Удаление части текста, при помощи sed
« Ответ #2 : 01 Март 2011, 20:28:49 »
ООО пашет!
Только вы как то странно сообщение написали =/
И можете еще, пожалуйста, расшифровать рег. выражение.
« Последнее редактирование: 01 Март 2011, 20:36:29 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Удаление части текста, при помощи sed
« Ответ #3 : 01 Март 2011, 20:35:53 »
s///g -- многократная замена
[^}]* -- подстрока из любых символов, кроме "}"

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Удаление части текста, при помощи sed
« Ответ #4 : 01 Март 2011, 20:36:19 »
Да с sed я работать немного умею, а вот с этим примером застопорился.
Проблема в том, что в sed {.[^{]*} - работает, а в QT нет 
В чем может быть проблема?
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Удаление части текста, при помощи sed
« Ответ #5 : 01 Март 2011, 20:38:26 »
RazrFalcon, я там немного поправил.
Лучше не [^{]*, а [^}]*.

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Удаление части текста, при помощи sed
« Ответ #6 : 01 Март 2011, 20:42:29 »
В sed так же, в QT не хочет =/
Если поможет, то делал так:
text.remove(QRegExp("{[^}]*}"));
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Удаление части текста, при помощи sed
« Ответ #7 : 01 Март 2011, 20:45:18 »
А если одинарные кавычки?
С QT, увы, помочь не могу.

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Удаление части текста, при помощи sed
« Ответ #8 : 01 Март 2011, 20:48:22 »
C ' вообще не компилит.
Ну спасибо уже за {[^}]*}  ;)
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Удаление части текста, при помощи sed
« Ответ #9 : 15 Март 2011, 20:48:09 »
Решено!
QString temptext;
temptext = "{\\blur6\\fad(300,600)\\fs70\\pos(386,268)}монстры";
temptext.remove(QRegExp("\\{[^\\}]*\\}"));
qDebug()<<temptext;

"монстры"
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

 

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