#pattern #grep #binary #regex #search-pattern #search

app bgrep

bgrep 是一个针对处理二进制模式和文件的 grep 工具

2 个版本 (1 个稳定版本)

1.0.0 2019年3月22日
0.1.0 2019年3月11日

#1799 in 文本处理

BSD-3-Clause

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