Регулярные выражения: замена в найденном

 
+
-
edit
 

HolyBoy

аксакал

Здравствуйте.

Есть текст, к примеру:
А роза упала на лапу Азора и проколола её.
 
Я хочу найти все одно- и двухбуквенные слова и заменить пробел после них другим символом, скажем, точкой, т.е.
А.роза упала на.лапу Азора и.проколола её.
 


Один из вариантов поиска я составил, опробовал в vim: 1,$/\( \)\([а-яА-Я][а-яА-Я]\?\)\1/. Эта штука ищет в середине предложения то, что надо, но неясно, как потом заменить в найденной подстроке завершающий пробел нужным символом.

Для первых букв в предложении шаблон поиска будет изменён соответственно. Также, нельзя избавиться от стартового пробела, т.к. иначе не узнать, где начинается слово.

И, да, я знаю, что для замены вим предполагает такую конструкцию s/regexp/result/ но как этот result к нужному месту regexp применить — не пойму. Возможно ли это? Или надо какой-нибудь ЯП использовать уже?
 
+
-
edit
 

Balancer

администратор
★★★★★
code bash
  1. $ echo 'А роза упала на лапу Азора и проколола её.' | sed -r 's/\b(\w{1,2})\s/\1./ig'
  2. А.роза упала на.лапу Азора и.проколола её.
 
+
-
edit
 

HolyBoy

аксакал

Разобрался.

Спасибо большое.
 

в начало страницы | новое
 
Поиск
Поддержка
Поддержи форум!
ЯндексЯндекс. ДеньгиХочу такую же кнопку
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru