У меня есть бинарный файл, и мне нужно посчитать вхождения определенной строки в этом файле или даже список затем смещения. В Windows или Linux - для этой задачи я использую Fedora 12 и Windows 2000.
3 ответа
В Linux с GNU grep:
grep -F --text -o --byte-offset mystring binaryfile
Пример:
$ grep -F --text -o --byte-offset option /bin/tar
226542:option
237529:option
237612:option
...
Объяснение параметров:
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by newlines,
any of which is to be matched. (-F is specified by POSIX.)
-a, --text
Process a binary file as if it were text; this is equivalent to the
--binary-files=text option.
-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with
each such part on a separate output line.
-b, --byte-offset
Print the 0-based byte offset within the input file before each line
of output. If -o (--only-matching) is specified, print the offset of
the matching part itself
Для подсчета случаев добавить | wc -l
в командную строку.
Agent Ransack - бесплатная утилита поиска файлов
Непосредственные результаты Найденный текст отображается с выделенными ключевыми словами, поэтому вам не нужно тратить время на открытие каждого файла в поисках
правильная информация.Булевы выражения. Объедините поисковые термины, используя знакомые логические операторы AND, OR, NOT.
- Форматы Office Поддержка популярных форматов Office, включая Office 2007 и OpenOffice.
- Perl regex Поддержка регулярных выражений, совместимых с Perl.
- 64-битная версия Собственно скомпилированная 64-битная версия для улучшения совместимости.
- Быстрый поиск Высокоэффективные алгоритмы поиска означают, что вы тратите меньше времени на ожидание результатов.
- Печать и экспорт результатов могут быть переданы другим путем печати и экспорта.
В Linux вы можете использовать strings -a [filename] | grep [string] | wc -l
В Windows вы можете использовать strings * | findstr /i [string]
, с утилитой strings от Sysinternals.