2014-11-03 100 views
0

我正在linux上搜索二进制文件中的模式,我不确定是否应该使用“grep”或“strings”命令来解析文件。我可以这样做:文件和字符串上的grep之间的区别?

grep *pattern* *file* 

strings *file* | grep *pattern* 

哪个更稳健?

+1

也不是理想的。 'grep'是一个面向行的工具,对大二进制blob来说它是一个糟糕的选择,但'strings'有已知的安全漏洞。然而,它将会以“grep”可以使用的形式提取内容。 – 2014-11-03 18:32:39

+0

有没有其他的命令行工具,你可能会建议? – Cala 2014-11-03 18:36:42

+0

@CharlesDuffy:我的理解是'strings -a'避免了安全漏洞。 – 2014-11-04 07:14:30

回答

1

在我看来,cat --show-nonprinting更适合这项任务

cat --show-nonprinting | grep pattern 

或者

cat -v | grep pattern 

How to grep a text file which contains some binary data?

+1

这与“字符串”解决方案的行为不同。 'cat -v | grep'匹配整行,由'\ n''字符分隔(取决于二进制文件,整个文件可能是单个“行”)。 'strings'在一个单独的行上显示每个连续的可打印字符组。 – 2014-11-04 07:16:13

+0

@KeithThompson很容易修复,'tr'[:cntrl:]''\ n'',如果内存服务仍然比字符串更快 – 2014-11-04 07:34:17

相关问题