我有一个二进制文件,我需要计算此文件中某个字符串的出现次数,甚至列出偏移量。在 Windows 或 Linux 中 - 对于此任务,我使用 Fedora 12 和 Windows 2000。
答案1
在 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
立即见效找到的文本会以突出显示的关键字显示,因此您无需浪费时间打开每个文件来寻找
正确的信息。布尔表达式使用熟悉的布尔运算符 AND、OR、NOT 组合搜索词。
- 办公室格式支持流行的 Office 格式,包括 Office 2007 和 OpenOffice。
- Perl 正则表达式支持 Perl 兼容正则表达式。
- 64 位版本本机编译的 64 位版本以提高兼容性。
- 快速搜索高效的搜索算法意味着您花费更少的时间等待结果。
- 打印和导出可以通过打印和导出与他人共享结果。
答案3
在 Linux 中,您可以使用strings -a [filename] | grep [string] | wc -l
在 Windows 中,您可以使用strings * | findstr /i [string]
,与字符串实用程序来自 Sysinternals。