2 个版本 (1 个稳定版本)
1.0.0 | 2019年3月22日 |
---|---|
0.1.0 | 2019年3月11日 |
#1799 in 文本处理
20KB
411 行
Bgrep - 用 Rust 编写的二进制 grep。
Bgrep 是一个 grep 的变种,旨在支持二进制模式和文件。与它的同类工具相比,它不会进行逐行匹配。因此,您可以匹配任何字节模式,包括那些可能跨越多行的模式。
用法
bgrep [FLAGS] <pattern> [files]...
FLAGS:
-b, --byte-offset Prints the byte offset of each match
-l, --files-with-matches Prints the name of the matched files (default output mode)
-L, --files-without-matches Prints the name of non-matched files
--help Prints help information
-i, --ignore-case Case insensitive matching for ASCII alphabetic characters
-v, --invert-match Invert the sense of matching, to select non matching slices
-h, --no-filename Suppress the file names on output (default when there is a single file).
-o, --only-matching Prints the matched bytes of each match
-n, --trim-ending-newline If the file ends with a newline, disconsider the last byte
-V, --version Prints version information
-H, --with-filename Print the file name for each match (default when there are multiple files).
Bgrep 使用 Rust 的 regex crate 作为引擎。正则表达式语法的文档可以在 这里 找到。Bgrep 默认禁用 Unicode 匹配,但可以通过使用 u
正则表达式模式标志来启用。
示例
文件.二进制
:
Ix | 0 1 2 3 4 5 6 7 8 9 A B C D E F | ASCII characters
---+-----------------------------------------+-----------------
00 | 0001 0203 0405 0607 0809 0A0B 0C0D 0E0F | ................
10 | 0000 0000 0000 0000 0000 0000 0000 0000 | ................
20 | 2021 2223 2425 2627 2829 2A2B 2C2D 2E2F | !"#$%&'()*+,-./
30 | 0000 0000 0000 0000 0000 0000 0000 0000 | ................
40 | 4041 4243 4445 4647 4849 4A4B 4C4D 4E0A | @ABCDEFGHIJKLMN.
获取给定模式的偏移量
$ bgrep -b '\x00\x20|\x00\x40' file.bin
0x1f
0x3f
获取匹配的字节
$ bgrep -o '\x40.+\x4d' file.bin
@ABCDEFGHIJKLM
列出不匹配的文件:(tac -rs .
反转文件)
$ tac -rs . file.bin | bgrep -L '\x4C\x4D' file.bin -
<stdin>
获取逆匹配的偏移量
$ bgrep -bv '\x00+' file.bin
0x1
0x20
0x40
许可证
版权所有 © 2019 gahag。
保留所有权利。
本软件可以根据 BSD 3 条款许可证进行修改和分发。有关详细信息,请参阅 LICENSE 文件。
依赖项
~2.7–4MB
~59K SLoC