
addhead | addtail | count | difflines | filter | head | joinlines | linelen | load | ofilter | perline | printloop | replace | run | runloop | snapto | sort | strings | tail | xed | xex | xreplace | Команда: replace sfk заменить singleFile [-текст] /src/dst/ [шаблон2] [...] [-да]
sfk replace -[s]pat -bin[ary] /A0A1A2/B5B6B7/ -dir anydir -file .ext1 [-yes]
sfk rep [-dump [-wide]] -bylist words.txt файл1 [файл2 ...] [-yes]
заменить текстовые или двоичные данные в текстовых и двоичных файлах.
может заменять множество различных шаблонов параллельно.
Несколько шаблонов поиска выполняются в заданной последовательности. Имейте это в виду
если они перекрываются, например, /foo/bar/ /foosys/thesys/ не имеет смысла (foo
заменено первым выражением, поэтому второе не совпадет).
по умолчанию заменить функции, работающие в режиме SIMULATION,
предварительный просмотр хитов без каких-либо изменений. добавьте -yes, чтобы применить изменения.
Изменение двоичных файлов может привести к непредсказуемым результатам, поэтому сохраняйте
резервные копии ваших файлов на всякий случай.
уведомление о лицензии
это версия sfk replace с открытым исходным кодом.
замена исходных/целевых шаблонов разной длины происходит медленнее
и может потребовать много памяти по сравнению с заменами той же длины.
SFK Plus или XE содержат другую реализацию с высокой производительностью.
подкаталоги включены по умолчанию
по умолчанию sfk для большинства команд обрабатывает заданные каталоги,
а также все поддиректории внутри них. укажите -nosub, чтобы отключить это.
опции
-nosub не включать файлы в подкаталоги.
-nobin[ary] пропускать бинарные файлы.
-case сравнение текста с учетом регистра. по умолчанию регистронезависимый
сравнение для всех текстовых строк, но НЕ для блоков -bin.
сравнение с учетом регистра выполняется быстрее, чем без учета регистра.
для получения дополнительной информации введите: sfk help nocase
-nocase принудительное сравнение без учета регистра ТАКЖЕ для шаблонов -bin.
-pat запускает список поиска или замены шаблонов вида
xsrcxdstx, где x — символ-разделитель, src — источник
для поиска и dst назначения для его замены.
например, /foo/bar/ или _foo_bar_ заменяют foo на bar.
-pat не требуется, если указано одно имя файла.
-text то же, что и -pat, начиная список текстовых шаблонов.
-spat аналогичен -pat, но также активирует шаблоны косой черты, такие как \t .
введите "sfk help pat" для списка возможных шаблонов.
-spats[trict] то же, что и -spat, но останавливается с ошибкой на undefined
шаблоны косой черты, такие как \m в C:\myproj. каждая косая черта
затем необходимо экранировать, например, с помощью C:\\myproj.
-bin[ary] запускает список бинарных шаблонов замены, указанных
как шестнадцатеричный код, например /0A0D/2020/
-bylist x.txt читать шаблоны поиска из файла x.txt, поддерживая
несколько строк в шаблоне. (добавьте -full, чтобы узнать больше.)
-bylinelist x читать /из/в/ или только /из/ шаблоны из файла x
с одним шаблоном в строке. (добавьте -full, чтобы узнать больше.)
-by(line)list не поддерживает переменные sfk.
для использования переменных в шаблонах создайте скрипт sfk
с шаблонами в качестве параметров. "скрипт sfk" для получения дополнительной информации.
-recsize с заменами одинаковой длины: установить размер входной записи
для обработки (по умолчанию=100k)
-firsthit обрабатывает только первое найденное совпадение с шаблоном в файле.
-maxscan=nm остановить поиск после (приблизительно) первых n мегабайт
за файл. можно использовать только с заменой одинаковой длины.
-quiet не показывать информацию о прогрессе.
-stat показывает статистику, например количество попаданий по шаблону и нет. файлов.
-perf показать статистику производительности.
-memlimit=nm с заменами разной длины, файлы должны быть загружены
в память для обработки. лимит памяти по умолчанию
использование составляет 300 МБ. установите -memlimit=500m, чтобы выбрать 500 МБ.
-full print полный текст справки, рассказывающий о файлах шаблонов -bylist,
особая чувствительность к регистру символов и вложенные или повторяющиеся
заменить поведение.
параметры вывода
-dump создать шестнадцатеричный дамп результатов поиска или замененного текста.
-wide с -dump: показывать 16 байт на строку.
-Lean with -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 строк.
коды возврата для пакетных файлов
0 = совпадений нет, 1 = совпадения найдены, >1 = произошла серьезная ошибка.
см. также "sfk help opt" о том, как повлиять на обработку ошибок.
о вложенных шаблонах замены
sfk заменить myfile.dat /foo/bar/ /bar/goo/
с базой SFK «foo» будет заменено на «bar», а затем
сразу же «бар» снова заменяется на «липкий».
с SFK Plus или XE замененная часть текста не заменяется
снова в той же команде, поэтому «foo» остается замененным на «bar».
неожиданное поведение повторной замены
в зависимости от входных данных и выражений поиска/замены,
может случиться так, что одна и та же замена выполняется несколько раз
в том же файле производит дальнейшие обращения, которых не было
в первом прогоне. добавьте опцию -full, чтобы узнать больше об этом.
многострочные параметры в кавычках поддерживаются в скриптах
с использованием полной отделки. введите "скрипт sfk" для деталей.
уведомление об исполнении
система может кэшировать выходные файлы, записывая на диск в
фон после завершения sfk. последующий командный файл
команды могут выполняться медленнее.
поддержка офисных файлов
sfk offind поиск в содержимом текстового файла .xml
офисные файлы, такие как .docx .xlsx .ods .odt.
Справочный офис sfk для получения дополнительной информации и вариантов
смотрите также
--- команды с открытым исходным кодом ---
sfk xfind поиск подстановочного текста в текстовых файлах
sfk поиска в офисных файлах .docx .xlsx .ods
sfk xfindbin поиск подстановочного текста в текстовых/двоичных файлах
sfk xhexfind поиск в текстовом/двоичном файле с выводом шестнадцатеричного дампа
sfk Extract извлекает данные подстановочных знаков из текстовых/бинарных файлов
sfk фильтрует фильтр и редактирует текст с помощью простых подстановочных знаков
sfk найти поиск фиксированного текста в текстовых файлах
sfk findbin ищет фиксированный текст в текстовых/бинарных файлах
sfk hexfind ищет фиксированный текст в бинарных файлах
sfk replace заменить фиксированный текст в текстовых/бинарных файлах
--- бесплатные команды ---
инструмент sfk view GUI для поиска текста по мере ввода
--- Коммерческие команды xe ---
sfk replace заменить фиксированный текст с высокой производительностью
sfk xreplace заменить подстановочный знак в текстовых/двоичных файлах
sfk help xe о SFK XE и xreplace с выражениями SFK.
остерегайтесь командных символов оболочки.
для поиска или замены текстовых шаблонов, содержащих пробелы или специальные
такие символы, как <>|!&?*, вы должны добавить кавычки "" вокруг параметров
или среда оболочки уничтожит вашу команду. Например,
шаблон /foo bar/other/ должен быть написан как "/foo bar/other/"
в файле .bat или .cmd процент % должен быть экранирован как %%
даже в кавычках: sfk echo -spat "процент %% - это процент \x25"
веб-ссылка
http://stahlworks.com/sfk-rep
распространенные ошибки использования
sfk hexfind в.txt "/foo\r\n/"
не найдет "foo" в конце строки, а ищет буквально
строки типа «косая черта и r». добавить опцию -spat для включения
шаблоны косой черты, преобразование \r\n в настоящие коды CRLF,
или используйте xhexfind, где шаблоны косой черты используются по умолчанию.
sfk hexfind mydir "/foo*bar/"
не найдет "foo" и "bar" ни с какими символами
между ними, но ищет буквальную звездочку "*".
используйте xhexfind, чтобы включить поиск с подстановочными знаками.
sfk rep in.txt "/foo[0,1000 байт]bar/---/"
не будет заменять до 1000 байт между "foo" и "bar",
но заменяет буквальную строку «foo», затем «[1000 байт]»
потом "бар". вместо этого используйте xed или xreplace.
Примеры
sfk заменить myfile.dat "/Lemon/Curry/"
замените Lemon на Curry в файле myfile.dat. search is
без учета регистра, поэтому "лимон" также будет заменен.
кавычки "" здесь необязательны.
sfk заменить -pat /FooCase// -dir . -файл .txt
поиск FooCase во всех файлах .txt ниже текущего каталога.
обратите внимание, что если вы пропустите единственный параметр fileOrDir,
вы должны сначала сказать -[s]pat, -bin или -text, чтобы четко сказать
что вы укажете целевой набор файлов позже.
sfk rep -spat "/The foo/The\tbar/" -dir mydocs
заменяет «The foo» на «The» и «bar», разделенные символом TAB,
во всех файлах в mydocs.
sfk rep -binary /1A/20/ -dir docs -file .txt .info .note
заменяет все байты с кодом 0x1A на код 0x20, во всех .txt,
Файлы .info и .note в каталоге docs и во всех подкаталогах.
sfk заменить tmp\image.dat -bylist patches.txt
ищет исходные шаблоны в файле tmp\image.dat,
заменяет шаблонами, указанными в patches.txt
SFK Base и XE: обмен текстами в два этапа
sfk -yes реп 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/ -да
заменяет 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. |
![]() |