linux – 从更大的二进制文件中获取大二进制值
正如标题所示,我想要一个相当大(约100MB)的二进制文件,对于二进制字符串 – 这个二进制字符串不到5K.
我已经使用-P选项尝试了grep,但是当模式只有几个字节时,这似乎只返回匹配 – 当我达到大约100个字节时,它不再找到任何匹配. 我也尝试过bgrep.但是,当我需要将模式扩展到我现在的长度时,我只是得到“无效/空搜索字符串”错误. 具有讽刺意味的是,在Windows中,我可以使用HxD来搜索文件,然后在实例中找到它.我真正需要的是一个Linux命令行工具. 谢谢你的帮助, 西蒙 解决方法
假设我们有几个大的二进制数据文件.对于一个不匹配的大文件,我们创建一个100MB的文件,其内容都是NUL字节.
dd ibs=1 count=100M if=/dev/zero of=allzero.dat 对于我们想要匹配的那个,创建一百个随机兆字节. #! /usr/bin/env perl use warnings; binmode STDOUT or die "$0: binmode: $!"; for (1 .. 100 * 1024 * 1024) { print chr rand 256; } 执行./mkrand> myfile.dat. 最后,将已知匹配提取到名为pattern的文件中. dd skip=42 count=10 if=myfile.dat of=pattern 我假设你只想要匹配(-l)的文件,并希望你的模式按字面处理(-F或–fixed-strings).我怀疑你可能已经遇到了-P的长度限制. 您可能想要使用–file = PATTERN-FILE选项,但grep将PATTERN-FILE的内容解释为换行符分隔模式,因此在您的5KB模式包含换行符的可能情况下,您将遇到编码问题. 所以希望你的系统的ARG_MAX足够大并且适合它.一定要引用模式的内容.例如: $grep -l --fixed-strings "$(cat pattern)" allzero.dat myfile.dat myfile.dat (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |