LINUX.ORG.RU

Автоматическая замена по тексту

 ,


0

1

Всем доброго времени суток!

ЛОР, помоги, пожалуйста, решить задачу. Я подозреваю, что это делается при помощи regular expressions, но я с ними абсолютно не знаком, а результат нужен здесь и сейчас.

Есть текстовый файл, в нём много инициалов (A.I., M.Z., etc.). Нужно все эти записи исправить так:

A.I. -> A.\,I.
M.Z. -> M.\,Z.

Идеально было бы перед исправлением ещё вывести все найденные выражения такого вида (чтобы не исправить лишнего).

★★★★★

Буквы могут быть и кириллическими. Но всегда две заглавные с точками подряд.

aquadon ★★★★★ ()
~ % LINE="foo M.Z. Bar Я.Г. Baz... Well, A.I."
~ % echo "$LINE" | sed -re 's/([A-ZА-Я])\.([A-ZА-Я])\./\1.\\,\2./g'
foo M.\,Z. Bar Я.\,Г. Baz... Well, A.\,I.

Так?

Идеально было бы перед исправлением ещё вывести все найденные выражения такого вида (чтобы не исправить лишнего)

echo "$LINE" | grep -o -E '([A-ZА-Я])\.([A-ZА-Я])\.'
M.Z.
Я.Г.
A.I.

Убрав -o, выделит прямо в тексте цветом.

В принципе можно сразу на sed сделать, но мне кажется, тут проще грепом этот этап.

Psych218 ★★★★★ ()
Последнее исправление: Psych218 (всего исправлений: 1)

Идеально было бы перед исправлением ещё вывести все найденные выражения такого вида (чтобы не исправить лишнего).

Тогда идеально будет исправлять по регулярному выражению в редакторе текста.

vodz ★★★★★ ()
Ответ на: комментарий от vodz

В Submime можно искать по regexp, но с исправлением у меня не получилось.

aquadon ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.