Войти

Показать полную графическую версию : [решено] Пакетная замена значений в текстовых файлах


Alexandr-Pessimist
28-09-2018, 21:20
Здравствуйте. Подскажите пожалуйста, можно ли реализовать пакетную замену значений в текстовых файлах:
Предисловие:
1. Есть папка с файлами (включая подпапки), всего около 100 текстовых файлов.
2. Есть INI-файл с содержимым в виде:
[replace]
0x00123=0x00456 (старое_значение=новое_значение, около 120 пар значений)
Требуется поочередно открыть каждый текстовый файл, найти все старые значения, заменить их новыми значениями.
Процесс поиска\замены может занять около 20-30 мин., но это будет лучше, чем в Notepad++ вручную искать\заменять каждое значение во всех файлах в папке..

Iska
28-09-2018, 22:00
всего около 100 текстовых файлов. »
Кодировка файлов какая? Какие концы строк? Можете просто упаковать несколько файлов в один архив вместе с ini-файлом и приложить к сообщению.

Процесс поиска\замены может занять около 20-30 мин. »
Не может.

Alexandr-Pessimist
28-09-2018, 22:29
Iska, UTF-8, CRLF
Смысл вот в чем: есть распакованное android-приложение. Нужно открыть все файлы *.smali ,найти в них значения и заменить их новыми значениями. Для удобства правки значений, они сохранены парами (старое=новое). По сути - пакетная замена PUBLIC_ID ресурсов.. Файлов *.smali много, расположены в различных подпапках основной папки smali..
Как мне кажется, нужно загрузить в 1 array список всех *.smali в папке (включая подпапки), во 2 array загрузить всю секцию из INI-файла. Далее, циклом подставлять имя файла, старое значение и новое значение, например:
файл 1
найти 0x123 заменить на 0x321
найти 0x456 заменить на 0x654
...остальные пары значений
файл 2
найти 0x123 заменить на 0x321
найти 0x456 заменить на 0x654
...остальные пары значений

Iska
29-09-2018, 11:37
UTF-8, »
Как именно определили? По единственному выложенному файлу — там может быть как ANSI/1251, так и UTF-8 без BOM: там символы только из ASCII-набора. А вот ini-файл Вы точно сделали в формате UTF-8 без BOM.

Alexandr-Pessimist
29-09-2018, 22:30
Задача решена с помощью TextReplace (http://forum.ru-board.com/topic.cgi?forum=5&topic=38450&start=0), исходники есть в комплекте.




© OSzone.net 2001-2012