4

У меня есть бинарный файл, и мне нужно посчитать вхождения определенной строки в этом файле или даже список затем смещения. В Windows или Linux - для этой задачи я использую Fedora 12 и Windows 2000.

3 ответа3

7

В 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 в командную строку.

2

Agent Ransack - бесплатная утилита поиска файлов

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

  • Булевы выражения. Объедините поисковые термины, используя знакомые логические операторы AND, OR, NOT.

  • Форматы Office Поддержка популярных форматов Office, включая Office 2007 и OpenOffice.
  • Perl regex Поддержка регулярных выражений, совместимых с Perl.
  • 64-битная версия Собственно скомпилированная 64-битная версия для улучшения совместимости.
  • Быстрый поиск Высокоэффективные алгоритмы поиска означают, что вы тратите меньше времени на ожидание результатов.
  • Печать и экспорт результатов могут быть переданы другим путем печати и экспорта.

1

В Linux вы можете использовать strings -a [filename] | grep [string] | wc -l

В Windows вы можете использовать strings * | findstr /i [string] , с утилитой strings от Sysinternals.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .