LINUX.ORG.RU

Замена в тексте с сохранением регистра


0

1

Подскажите, пожалуйста, как можно из консоли сделать замену текста в файлах, сохранив при этом регистр?
Пример текста файла:

text
Text
teXT
Найти:
text
заменить на:
text1
Результат:
text1
Text1
teXT1
Такую замену умеет делать sublime (но только латиницу).

Ответ на: комментарий от anonymous

Не совсем то

Так работает, но зто получается дописать к концу строки строку.
А что если нужно сделать в том же тексте такую замену:
text -> te2xt?

ki44321
() автор топика
Ответ на: комментарий от qux

Не то

Под конкретный случай это понятно - регулярки.
Но мне интересен общий случай.
Вот практическое применение, скажем, есть файл с кодом и там есть такие слова:

BigCarNew
BigCar11
bigcar
bigcar11
bigcar_new
необходимо заменить
bigcar -> bigredcar
или вообще
big -> small
и получить текст в том же регистре и не писать под каждый отдельный случай регулярку
Это возможно?

ki44321
() автор топика
Ответ на: комментарий от qux

Нет не такое:)

В любом случае, всем спасибо за помощь, буду использовать частные случаи, меня это устраивает. Вопрос был для общего развития.

ki44321
() автор топика
Ответ на: Не то от ki44321

Ы. Без регулярки программа должна телепатически угадать каким исходным символам какие итоговые соответствуют, как ты думаешь?

Хотя конечно можно заюзать эвристику на основе расстояния Левенштейна. И она будет даже работать в некоторых случаях. Нов общем случае, такой алгоритм совсем не гарантирует, что ты получишь сохранение регистра символов именно там, где ожидал.

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

Да может тут хочется простейших двух полей в текстовом редакторе, с галкой вроде «keep case». Регулярка там может и будет, но под капотом. Но /me такого не видел.

qux
()
Ответ на: комментарий от ki44321

неизвестный модификатор к `s'

Это g то неизвестный? Ну и ну его; идею ты понял.

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