Вопрос

У меня есть небольшая утилита, которая выполняет поиск в нескольких файлах.Мне пришлось создать его, потому что поисковые системы Google и Windows не находили подходящих строк в файлах.Поиск работает нормально (я хочу его улучшить), но одна из вещей, которые я хотел бы добавить в свою утилиту, - это пакетный поиск / замена.

Итак, как лучше всего прочитать строку из файла, сравнить ее с поисковым запросом и, если она удастся, обновить строку и продолжить просмотр остальной части файла?

Это было полезно?

Решение

Для каждого файла я бы сделал следующее:

  • Выполните поиск как обычно.Также проверьте токен, который нужно заменить.Как только вы его увидите, запустите этот файл снова.Если вы не видите токен, который нужно заменить, все готово.
  • Когда вы начнете снова, создайте новый файл и скопируйте каждую строку, которую вы читаете из входного файла, выполняя замену по ходу.
  • Когда вы закончите работу с файлом:
    • Переместить текущий файл в резервное имя файла
    • Переместите новый файл в исходное имя файла
    • Удалить файл резервной копии

Будьте осторожны, чтобы не делать этого с двоичными файлами и т. д. - последствия выполнения текстового поиска и замены в двоичных файлах, как правило, будут ужасными!

Другие советы

Если PowerShell является вариантом, функция, определенная ниже, может использоваться для выполнения поиска и замены в файлах.Например, чтобы найти код сгенерированного кода в текстовых файлах в текущем каталоге, вы должны сделать:

родовое слово

Чтобы заменить код 'a string' другим значением, просто добавьте новое значение в конце:

родовое слово

Вы также можете вызвать его в отдельном файле с помощью 'a string'.

родовое слово

Обратите внимание, что FindReplace -path MyFile.txt 'a string' также поддерживает совпадения регулярных выражений, но для простоты был ограничен простыми совпадениями;) Вы также можете выполнить более надежную замену, например Джон предложил, а не просто перезаписывать файл новым содержимым.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top