文件中的Grep十六进制字符

时间:2019-01-22 21:22:47

标签: unix grep

我在查找文件中的十六进制字符数时遇到一些困难。例如:

grep -o \x02 file | wc -l
0

此处大约应有3M个匹配项,但似乎\x02字符在此处并未被识别。例如(在python中):

>>> s=open('file').read()
>>> s.count('\x02')
2932267

2 个答案:

答案 0 :(得分:1)

这似乎可以在macOS上完成您想要的工作:

printf "\x02\n3\n\x02" | grep -c "\x02"
2

答案 1 :(得分:1)

Mark Setchell给出的答案在MacOS上可能是正确的,但在使用bash的debian上似乎不起作用(已通过bash 4.4,grep 2.27测试)。

我可以使用-P指令(对于Perl正则表达式)进行匹配

user@host:~ $ printf '\x02\n3\n\x02' | grep -c -P '\x02'
2
user@host:~ $ printf '\x02\n3\n\x02' | grep -c -P '\xFF' #same input, different pattern
0
user@host:~ $ printf '\x02\n3\n\xff' | grep -c -P '\xFF' #match with unmatching case
2

希望这会有所帮助