deplist | dupfind | extract | find | hexfind | md5 | md5check | md5gento | ofind | pathfind | reflist | xfind | xfindbin | xhexfind | Команда: extract Извлечение текста из файлов с помощью подстановочных знаков и выражений
Извлечение данных из текстовых и двоичных файлов с помощью подстановочных знаков * и ? а также простые выражения SFK в скобках []. Создает (двоичный) поток данных, который может быть: ПАРАМЕТРЫ nosub - не включать файлы в подкаталоги.nobin[ary] - пропустить бинарные файлы.case - сравнение текста с учетом регистра. Значение по умолчанию не учитывается. Для получения подробной информации введите: SFK Help NoCase text - Запускает список шаблонов поиска в форме /src/ или /src/totext/,
где / — символ-разделитель, src — текст для поиска, а totext — маска для переформатирования вывода.Можно использовать любой символ-разделитель, который не является частью искомого текста, т.е. /foo/ или _foo_ оба ищут «foo». -text не требуется, если указано одно имя файла. pat - то же самое, что и -text, начиная со списка шаблонов
bylist - x.txt чтение шаблонов поиска из файла x.txt, поддержка
Несколько линий в шаблоне. (Добавьте -full, чтобы узнать больше.)
bylinelist - Чтение шаблонов /from/to/ или просто /from/ из файла x
с одним шаблоном в строке (для получения дополнительной информации добавьте -full).-by(line)list не поддерживает переменные sfk. Чтобы использовать переменные в шаблонах, создайте сценарий sfk с шаблонами в качестве параметров. «sfk-скрипт» для получения дополнительной информации. arc - XE: включить содержимое .zip .jar .tar и т.д. архивов
как можно глубже, включая вложенные архивы. XD: demo прочитает первые 1000 байт каждой записи qarc - быстрое чтение архивов верхнего уровня, но не вложенных
firsthit - показывать только первое найденное совпадение шаблона для каждого файла
tracesel - подробно рассказать, какие файлы ищутся, а какие игнорируются
quiet - не показывать информацию о прогрессе
names - выводит только имена файлов, содержащих хотя бы одно попадание
notnames - выводит только имена файлов, не содержащих ни одного хита
justrc - не выводить результаты поиска, просто установить код возврата при обращениях
full - полный текст справки, рассказывающий о -bylist pat.Файлы, чувствительность к регистру специальных символов и поведение вложенной или повторяющейся замены. Параметры вывода dump - создать шестнадцатеричный дамп поисковых совпадений или замененного текста
wide - с -dump: показать 16 байт в строке
lean - с -dump: показать 8 байт в строке
dumpfrom - всегда выгружать поисковые совпадения, но не заменяемый текст
dumpall - выгрузить искомый текст и заменяемый текст
nodump - не создавать шестнадцатеричный дамп, выводить только совпадающие файлы
astext - не шестнадцатеричный дамп, но вывод результатов поиска в виде обычного текста. Используйте его только с обычными текстовыми файлами, а не с двоичными showle - подсвечивать окончания строк CR/LF в шестнадцатеричном выводе дампа
context=n - с шестнадцатеричным дампом: показать дополнительные n байт контекста
reldist - с hexdump: определить относительные расстояния до предыдущих совпадений
nofile - не вставлять строки заголовка :file в вывод
crlf,-lf - для заголовков файлов и текста по умолчанию:
принудительное окончание строк crlf или lf вместо системного значения по умолчанию.
filehead s - заголовок файла s для вставки в каждый совпадающий файл. Можно использовать только [file.name], окруженный текстом. по умолчанию -filehead ":file [file.name]", если только выполняется поиск в одном файле. Не может быть использован с Xhexfind. Чтобы получить результат и имя в одной строке, используйте [file.name] в выражении, например: sfk xfind -pure -nofile mydir "/foo*bar/[file.name]: [all]\n/"
sep s - определить разделитель s между совпадениями в файле
to dir\$file - записать выходные файлы по указанному пути.Подробнее о масках выходного файла, введите "SFK Help Opt" или "SFK Run" tofile x - записать выходные данные в один выходной файл с именем x
(которые не интерпретируется как маска, а воспринимаются как есть)
+tofile x в качестве последнего параметра (цепочка команд): записать текст как он отображается на терминале в файл x more[n] - приостанавливать вывод каждые 30 или n строк
Коды возврата для bat-файлов
Смотрите также «SFK Help Opt» о том, как повлиять на обработку ошибок Многострочные параметры в кавычках поддерживаются в скриптах Использование полной обрезки. Введите "SFK script" для получения подробной информации Многострочные параметры в кавычках поддерживаются в скриптах Подстановочные знаки и выражения SFK Выражения SFK - это простые шаблоны, содержащие буквенный текст, подстановочные знаки * и ? и классы символов в квадратных скобках []. По сути, синтаксис предоставляет расширенные подстановочные знаки, но не содержит дополнительной логики и не связан с регулярными выражениями. Шаблоны поиска окружены символом-разделителем, которым может быть что угодно, не содержащееся в тексте поиска, например / или _. Внутри шаблона /fromtext/totext/ fromtext может содержать: * - от 0 до 4000 символов в одной текстовой строке или абзаце,
т.е. все байты, не имеющие значения CR, LF или NULL.
4000 — это просто максимум по умолчанию, который можно изменить следующим образом:
[0.100000 chars] - от 0 до 100 000 символов в одной текстовой строке или абзаце,
т.е. то же, что *, но с большим диапазоном.
? - один символ
????? - то же, что [5,5 символов] или [5 символов]
[bytes] - от 0 до 4000 байт (с CR,LF,NULL), т.е. он собирает текст потока по строкам,
даже в двоичных данных
[0.100 bytes] - от 0 до 100 байт
** - то же, что [байты]
[.100000 bytes] - до 100000 байт
[1.* bytes] - от 1 до максимального количества байт по умолчанию
[2 chars] - ровно 2 символа
[30 bytes] - ровно 30 байт
[byte of aeiou] - одна гласная (OR A OR e OR...), по умолчанию нечувствителен к регистру. «aeiou» — это список символов
[byte of \\\x2f] - обратная косая черта \ или вперед. косая черта /
[bytes of \r\n \t] - пробелы, включая конец строки
[bytes of (\r\n \t)] - то же, () не обязательны
[bytes not \r\n\0] - до 4000 байт, пока не появится байт CR, LF или NULL.
[chars] - то же, что [байты не \r\n\0], т.е. собирать текст в строку
[char not ( \t)] - то же, что [byte not (\r\n\0\t)], все, кроме пробелов и табуляций
[char not )( \t] - без скобок, пробелов и табуляций, как и без (\(\) \t)
[chars of a-z0-9] - означает a-zA-Z0-9, поскольку поиск по умолчанию нечувствителен к регистру
[chars of \x61-\x7A] - ищите от a до z, но не от A до Z, или используйте опцию -case для поиска по регистру
[eol] - конец строки символами: CRLF или LF или CR
[white] - 0 или более пробелов
[xwhite] - то же, но через строки
[1 white] - 1 пробел
[digit] - 1 цифра
[digits] - 0 или более цифр
[hexdigit] - 1 шестнадцатеричная цифра
[hexdigits] - 0 или более шестнадцатеричных цифр
Специальные ключевые слова, которые не считаются токенами:
Как найти или заменить специальные символы: Приоритеты расширения: (сначала самый высокий)Если две части поиска расположены рядом и один и тот же входной символ соответствует обеим, то применяются следующие приоритеты: Это означает, что в "/[bytes]foo/" [bytes] перестанет собирать символы, как только будет найдено "foo", поскольку "foo" является литералом. При том же или более высоком приоритете правая сторона останавливает левую сторону. ToText может содержать: [part 1] использует первую текстовую часть fromtext, например fromtext /*foo[.100 chars]bar*/ содержит части: 1 2 3 4 5
[part1] то же (пробел необязателен).
[parts 1,2,3] используйте части 1, 2 и 3.
[parts 1-10] используйте части с 1 по 10.
[strip(part1,\0)] использует часть 1, но удаляет нулевые байты,
можно удалить только нулевые байты "\0".
[file.name] полное входное имя файла с путем
[file.relname] входное имя файла без пути
[file.path] путь к входному файлу
[file.base] имя файла без последнего расширения.
[file.ext] расширение имени входного файла
[all] использовать все части из fromtext.
[setvar name]...[endvar] установить переменную "name" с данными
между setvar и endvar.
[getvar name] заполнить данные из переменной "name"
Хотя якоря типа lstart, Lend считаются отдельной частью,
их НЕ обязательно указывать в тексте. Поддерживаемые шаблоны косой черты: \t = TAB
\r = CR
\n = LF
\x00 = один байт с шестнадцатеричным кодом 00
\0 = короткая форма для \x00
\q = двойная кавычка
\\ = символ обратной косой черты \ сам по себе
\[ = открывающий символ скобки [
\] = закрывающий символ скобки ]
\* = буквенный символ звезды *
\? = буквенный вопросительный знак ?
\- = для использования литерала "-" в команде
В многострочных файлах -bylist: Только в списках "char of" или "byte not":
Параметры выражений SFK showpart(s) - вывести номера деталей /from/, статистику диапазона
и приоритетные точки расширения для каждой части. Выполняется автоматически, если требуемый текст /to/ не указан в команде. showbest - если шаблон /from/ ничего не находит, используйте это для
посмотрите, сколько частей будет совпадать на данный момент и сколько байтов будет в каждой части.
Якоря типа [lstart] могут иметь ненулевую длину при сопоставлении (CR)LF.
showlist с -bylist, показать внутренний объединенный список, если
команды распределены по нескольким строкам.
showall - показать все вышеперечисленное.
xmaxlen=n установить максимальную длину по умолчанию для команд в виде
символов или байтов, например,-xmaxlen=10000 означает, что /foo*bar/ соответствует до 10 000 символов между foo и bar. Максимальная длина по умолчанию без этой опции составляет 4000 символов. Замечания по производительности Вместо этого используйте /[lstart]*foobar/. Поддержка цепочки Выходные данные SFK Extract могут быть отправлены только на +XED или +xex. ПСЕВДОНИМЫ
Для извлечения неизмененных двоичных данных вы можете использовать
Поддержка файлов Office
СМОТРИТЕ ТАКЖЕ Команды с открытым кодом
Бесплатные команды
XE коммерческие команды
Остерегайтесь командных символов оболочки. Чтобы найти или заменить текстовые шаблоны, содержащие пробелы или специальные символы, такие как <>|!&?*, вы должны добавить кавычки "" вокруг параметров, иначе среда оболочки уничтожит вашу команду. Например, шаблон /foo bar/other/ должен быть записан как «/foo bar/other/» в файле .bat или .cmd, процент % должен быть экранирован как %% даже в кавычках: sfk echo -spat «percent %» % — это процент \x25" О примерах чисел [со скобками] Если вы видите [1], введите «sfk cmd 1» для всей команды в одной строке. Плохие примеры с исправленииями: Если входной текст содержит:
sfk xfind in.txt "/bool[xwhite]bCl*[xwhite];/"
НЕ соответствует «bool bClFoo;» потому что * съедает всю строку ввода, включая ";" поэтому для "[xwhite];" не осталось ввода и все выражение терпит неудачу. sfk xfind in.txt "/bool[xwhite]bCl[* not ;][xwhite];/"
оба соответствуют «bool bClFoo;» и «bool bClBar ;». это означает, что всякий раз, когда ваш поиск не работает, подробно напишите, какие символы (не) где собирать. sfk xex in.txt "/[lstart]foo/[lstart]goo/"
нет необходимости писать якорь типа [lstart] внутри totext, поскольку он не содержит данных. Используйте вместо этого: sfk xex в.txt "/[lstart]foo/goo/"
Привязки типа [lend] должны находиться в начале или конце fromtext и на них нельзя ссылаться внутри totext. Рабочие примеры sfk xfind -text "/class [bytes]{[bytes]}/[all]\n\n/"
-dir mydir -file .hpp +tofile out.txt Сбор определений классов из mydir и запись выходных данных
опосредованно (через цепочку команд) на выход из .txt [13]
sfk extract in.txt -text "/foo*bar/" Поиск в .txt шаблонов, начинающихся с foo и заканчивая
с bar, в той же строке, до 4000 символов между ними
sfk extract in.txt -text "/foo*bar/" +view То же самое, что и выше, но покажите результат в представлении Depeche
Инструмент текстового браузера для удобства чтения
sfk xhex -text "/foo[0.100000 bytes]bar/" -dir mydir
Поиск во всех текстовых и двоичных файлах mydir на наличие шаблонов
foo и bar от 0 до 100000 байт (включая NULL, CR и LF) и вывести вывод в виде шестнадцатеричного дампа
sfk extract -text "/printf(**);/" -dir mydir -file .cpp
Найдите все операторы printf в исходном коде, включая операторы по нескольким строкам
sfk extract in.txt "/foo[0.100 chars of (a-z0-9_@ )]bar/"
извлекает из одного входного файла в .txt все фразы
начальная foo и конечная строка, в одной строке, с помощью
от 0 до 100 символов между буквенно-цифровыми или один из символов @ _ или пустой символ
sfk sel mydir .txt +extract "/foo*bar/" Извлеките foo*bar из всех файлов .txt в mydir
sfk extract mydir "/\x66\x6f\x6f[0.100 bytes]\x62\x61\x72/" -tofile out.dat
найти двоичные данные, начинающиеся с байтов 0x66, 0x6f, 0x6f,
заканчивающиеся на 0x62, 0x61, 0x72 и до 100 байт между ними.
Во всех файлах папки mydir, записывая найденные данные в один файл out.dat
sfk extract -text "/class [bytes]{[bytes]}/[all]\n\n/"
-tofile out.txt -dir mydir -file .hpp
Сбор определений классов из Mydir непосредственно в Out.txt [10]
sfk extract -dir mydir -file .cpp -text "/printf([bytes]);/[all]\n/"
+xed "/);[eol]/[all]/" "/[eol][1.* white]/ /"
извлечь все (многострочные) операторы printf из исходного кода,
Преобразуйте многострочный в однострочный, удаляя пробелы. [11]
"/); [eol]/[all]/" сохраняет все окончания строк после ");"
sfk extract -text "/$version:vernum=*,*name=*,*os=*,
[file.name]: [part6] v[part2] for [part10]\n/"
-tofile versions.txt -dir mydir -file .exe -nofilenames
Поиск всех файлов .exe в mydir для текстового блока, такого как
$version:vernum=1.6.9,name=fooprog,os=windows
затем извлечь и переформатировать информацию о версии и запись результатов без заголовков :file в versions.txt [12]
sfk extract in.zip "/PK\x05\x06[0.100 bytes]/" ищем символы 'P','K', затем байты 0x05 0x06
а затем до 100 байт в необработанных сжатых данных файла .zip без извлечения содержимого
sfk extract -arc in.zip "/class*/"
XE: найдите фразы, начинающиеся с "class" в содержимом .zip XD: демонстрация будет искать первые 1000 байт в подфайле .zip |