addhead | addtail | count | difflines | filter | head | joinlines | linelen | load | ofilter | perline | printloop | replace | run | runloop | snapto | sort | strings | tail | xed | xex | xreplace | Команда: replace Поиск и замена текста в текстовых и двоичных файлах
Заменяет текстовые или двоичные данные в текстовых и двоичных файлах. Может заменять множество различных шаблонов параллельно. Несколько шаблонов поиска выполняются в заданной последовательности. Имейте это в виду, если они пересекаются, например, /foo/bar/ /foosys/thesys/ не имеет смысла (foo заменяется первым выражением, поэтому второе не будет соответствовать). По умолчанию функции замены выполняются в режиме МОДЕЛИРОВАНИЯ. Предварительный просмотр хитов, ничего не меняя. Добавьте -yes, чтобы применить изменения. Изменение двоичных файлов может привести к непредсказуемым результатам, поэтому в любом случае сохраняйте резервные копии файлов. Лицензионные примечания Это версия sfk replace с открытым исходным кодом. Замена исходных/целевых шаблонов разной длины происходит медленнее и может потребовать больше памяти по сравнению с заменами одинаковой длины. SFK Plus или XE содержат другую реализацию с высокой производительностью. Подкаталоги включены по умолчанию. По умолчанию для большинства команд sfk обрабатывает данные каталоги, а также все подкаталоги внутри них. Укажите -nosub, чтобы отключить это. ПАРАМЕТРЫ nosub - не включать файлы в подкаталоги.nobin[ary] - пропустить бинарные файлы.case - Сравнение текста с учетом регистра.
По умолчанию выполняется сравнение без учета регистра для всех строк -text, но НЕ для блоков -bin.
Сравнение с учетом регистра выполняется быстрее, чем сравнение с учетом регистра.
Для получения более подробной информации введите: sfk help nocase
nocase принудительно выполнять сравнение без учета регистра ТАКЖЕ в шаблонах -bin.
pat - запускает список поиска или замены шаблонов формы
xsrcxdstx, где x — символ-разделитель, src — источникДля поиска и выберите пункт назначения, на который его следует заменить. Например /foo/bar/ или _foo_bar_ заменяют foo на bar. -pat не требуется, если указано одно имя файла. text - то же, что и -pat, запуск списка текстовых шаблонов.
spat - то же самое, что и -pat, но также активирует шаблоны косой черты,
такие как \t . Введите "sfk help pat" для получения списка возможных шаблонов. spats[trict] - то же, что и -spat, но останавливается с ошибкой при
использовании неопределенных шаблонов косой черты, таких как \m в C:\myproj.
Затем каждая косая черта должна быть экранирована, например. используя C:\\myproj.
bin[ary] - запускает список шаблонов бинарной замены, указанных
в виде шестнадцатеричного кода, например /0A0D/2020/
bylist x.txt - чтение шаблонов поиска из файла x.txt, поддержка
нескольких строк в шаблоне. (Добавьте -full, чтобы узнать больше.)
bylinelist x - чтение шаблонов /from/to/ или просто /from/ из файла x
с одним шаблоном на строку. (Добавьте -full, чтобы узнать больше.)
by(line)list - не поддерживает переменные sfk. Чтобы использовать переменные в шаблонах, создайте сценарий SFK с шаблонами в качестве параметров. "SFK Script" для получения дополнительной информации recsize - с заменой одинаковой длины: установить размер входной записи
для обработки (по умолчанию = 100 КБ)
firsthit - обрабатывать только первое найденное совпадение шаблона для каждого файла
maxscan=nm - прекратить поиск после (приблизительно) первых n мегабайт
за файл. Может использоваться только с заменой одинаковой длины
quiet - не показывать информацию о прогрессе
stat - показать статистику, такую как совпадение шаблона и количество файлов
perf - показать статистику производительности
memlimit=nm - при заменах разной длины файлы необходимо загружать в память для обработки.
По умолчанию лимит использования памяти составляет 300 МБ. установите -memlimit=500m, чтобы выбрать 500 МБ
full - распечатать полный текст справки, рассказывающий о файлах шаблонов -bylist,
чувствительность к регистру специальных символов и поведение вложенной или повторяющейся замены
Выходные параметры dump - создать шестнадцатеричный дамп поисковых хитов или замененного текста
wide - с -dump: показать 16 байт в строке
lean - с -dump: показать 8 байт в строке
dumpfrom - всегда выгружать поисковые хиты, но не заменяемый текст
dumpall - выгрузить искомый текст и заменяемый текст
nodump - не создавать шестнадцатеричный дамп, выводить только совпадающие файлы
astext - не шестнадцатеричный дамп, но вывод результатов поиска в виде обычного текста. Используйте его только с обычными текстовыми файлами, а не с двоичными showle - подсвечивать окончания строк CR/LF в шестнадцатеричном выводе дампа
context=n - с шестнадцатеричным дампом: показать дополнительные n байт контекста
reldist - с hexdump: определить относительные расстояния до предыдущих попаданий
to - dir\$file записать выходные файлы по указанному пути. Подробнее о
масках выходного файла, введите "SFK Help Opt" или "SFK Run"
tofile - x записать выходные данные в один выходной файл с именем x
(которая не интерпретируется как маска, а воспринимается как есть)
more[n] - приостанавливать вывод каждые 30 или n строк
Смотрите также «SFK Help Opt» о том, как повлиять на обработку ошибок. О вложенных шаблонах замены sfk заменит myfile.dat /foo/bar/ /bar/goo/ с базой sfk, «foo» будет заменено на «bar», а затем сразу же «bar» снова будет заменено на «goo». При использовании SFK Plus или XE замененная часть текста не заменяется снова в той же команде, поэтому «foo» остается замененным на «bar».
Поддержка файлов MS Office
СМОТРИТЕ ТАКЖЕ Комады open source sfk xfind Поиск текста с подстановочными знаками в обычных текстовых файлах
sfk ofind Поиск в файлах Office .docx .xlsx .ods
sfk xfindbin Поиск текста с подстановочными знаками в текстовых/двоичных файлах
sfk xhexfind Поиск в текстовом/двоичном файле с шестнадцатеричным выводом дампа
sfk extract Извлечение данных с подстановочными знаками из текстовых/двоичных файлов
sfk filter Фильтрация и редактирование текста с помощью простых подстановочных знаков
sfk find Поиск фиксированного текста в текстовых файлах
sfk findbin Поиск фиксированного текста в текстовых/двоичных файлах
sfk hexfind Поиск фиксированного текста в двоичных файлах
sfk replace Замена фиксированного текста в текстовых/двоичных файлах
Команды freeware
Команды коммерческого XE
Остерегайтесь командных символов Shell Чтобы найти или заменить текстовые шаблоны, содержащие пробелы или специальные символы, такие как < >|!&?*, вы должны добавить кавычки "" вокруг параметров, иначе среда оболочки уничтожит вашу команду. Например, шаблон /foo bar/other/ должен быть записан как "/foo bar/other/" в файле .bat или .cmd, процент % должен быть экранирован, как %%, даже в кавычках: sfk echo -spat "процент %% — это процент \x25" Общие ошибки использования
ПРИМЕРЫ sfk replace myfile.dat "/Lemon/Curry/"
Заменит Lemon на Curry в myfile.dat.Поиск не чувствителен к регистру, поэтому слово «лимон» также будет заменено. Кавычки "" здесь необязательны. sfk replace -pat /FooCase// -dir . -file .txt
Найдет FooCase во всех файлах .txt ниже текущего каталога.Обратите внимание: если вы опустите один параметр fileOrDir, вам нужно сначала сказать -[s]pat, -bin или -text, чтобы четко указать, что целевой набор файлов вы укажете позже. sfk rep -spat "/The foo/The\tbar/" -dir mydocs заменит "The foo" на "The" и "bar",
разделенные символом табуляции, во всех файлах MyDocs
sfk rep -binary /1A/20/ -dir docs -file .txt .info .note
заменит все байты с кодом 0x1A на код 0x20, во всех файлах .txt, .info и .note, в каталоге docs и во всех подкаталогах
sfk replace tmp\image.dat -bylist patches.txt ищет исходные шаблоны в файле tmp\image.dat,
заменяет шаблонами, указанными в patches.txt
SFK Base и XE: поменять текст в два шага sfk -yes rep io.txt /foo34/foo99/ /foo12/foo34/ +rep /foo99/foo12/
Заменяет foo12 на foo34 и наоборот.В SFK Base заменяемое слово может быть снова заменено следующим шаблоном, поэтому промежуточный шаг: превратить foo34 во что-то, что нигде не используется в io.txt, затем заменить foo12, затем заменить промежуточный шаблон обратно во второй команде замены в том же файле Только SFK XE: замена текста за один шаг sfk rep io.txt /foo12/foo34/ /foo34/foo12/ -yes
Заменяет foo12 на foo34 и наоборот. С XE, слово, которое заменяется не просматривается снова в той же команде, поэтому
"foo34" из первого шаблона не изменяется на 2-й
sfk hexfind mydir -pat /FooCase/ +list -late
не заменяет, просто найдет бинарные файлы, содержащие "FooCase",
Затем перечислит их, отсортированные по времени. Также принимает файлы -bylist
sfk replace -binary /666f6f/626172/ -dir mydir -file .dat
замените двоичные данные шестнадцатеричными значениями 0x66, 0x6f, 0x6f
на данные со значениями 0x62, 0x61, 0x72 во всех файлах .dat.
Пример с выводом Готовим замену шаблону "class Foo"
[simulating:] [total hits/matching patterns/non-matching patterns] testfiles\FooBank\GUI\include\FooGUI.hpp: hit at offset 0x64 >6F6E616C 6974792E< onality. 00000054 >0D0A2A2F 0D0A0D0A< ..*/.... 0000005C >636C6173 7320466F< class Fo 00000064 >6F475549 0D0A7B0D< oGUI..{. 0000006C >0A707562 6C69633A< .public: 00000074 [001/1/0] testfiles\FooBank\GUI\include\FooGUI.hpp testfiles\Formats\12-foo-jam.txt: hit at offset 0xE6C >6F6E616C 6974792E< onality. 00000E5C >0D0A2A2F 0D0A0D0A< ..*/.... 00000E64 >636C6173 7320466F< class Fo 00000E6C >6F475549 0D0A7B0D< oGUI..{. 00000E74 >0A707562 6C69633A< .public: 00000E7C [001/1/0] testfiles\Formats\12-foo-jam.txt 38 files checked, 2 would be changed. [add -yes to execute.] Входные данные перечислены в шестнадцатеричном и ASCII-формате, а совпадения выделены. |