我在查找文件中的十六进制字符数时遇到一些困难。例如:
grep -o \x02 file | wc -l
0
此处大约应有3M个匹配项,但似乎\x02
字符在此处并未被识别。例如(在python中):
>>> s=open('file').read()
>>> s.count('\x02')
2932267
答案 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
希望这会有所帮助