首页 > 使用 grep 查找一个二进制文件,如何输出匹配字符串的偏移量?谢

使用 grep 查找一个二进制文件,如何输出匹配字符串的偏移量?谢

sf提示我“请描述问题”,那么..
如题所述...感谢


sf提示我“请详细描述问题”我也是醉了...
那我就详细说说吧...
我参加前天的hackathon的时候手贱,抄了网上一份很不靠谱的代码(Applescript的),然后呵呵,把我桌面给清空了。

你可能会问:”什么?难道你没有用Time Machine吗?“
哈哈哈哈哈哈,我参加Hackathon的前一天,电脑突然提示我,亲爱的用户我需要重建你的备份以更好的备份之类的。我就随手点了个好上去睡觉了。
翌日起床准备去参加hackathon的时候特么还没搞完... (事实上似乎是我桌下的服务器在下片导致慢的...我买了台服务器里面组了RAID1阵列来跑Time Machine...还有三点两地的中的第三点云备份刚准备传上去...数据还是丢了哈哈你说讽刺不...)(我的数据不大也就是20G左右)

哈哈哈哈,然后比赛码代码的时候里面有个部分要用到applescript调用keynote的一个玩意儿。因为applescript这货的资料实在是不多,所以不知道找了一份什么坑爹的东西,照着一打,哎哟我妈,真开心,只见鼠标卡了一瞬,我就跪了。桌面没了。

哈哈哈哈哈哈哈,幸亏比赛的拙作品的代码还没丢,于是提交上去还算顺利。
总之心情被搅得很糟糕,写了好久的课设,收集了好久的电子书,反正不用我说,如果是你丢了你的主目录你也会烦的对吧吧吧吧吧。(我桌面基本上就是我的根目录..)

在hackathon现场机智的我当即立断拨打了4006272273,说了一大堆情况之后让我打开发者服务热线,热线个毛,工作日才能打。
我就耐着性子等到了今天周一,我估计我是9点钟上班他们第一个接听的人,说了一大堆感觉开发者热线的客服也不大懂,引导我在官网上寻找答案,找了10分钟找到了个电话号码4006272273,槽这不就是我前天打的电话吗?然后我又打过去,描述了一大堆又让我打开发者...情况如下

12-21    4006272273 <---- 我...
              |
              ----------> 4006701885 ---> “上班再打” 

12-22            我 ----> 4006701885 
                               |                
         4006272273 <----------- 
              |
              ----------> 4006701885
                               |
         4006272273 <----------- 
              |
              ----------> 4006701885
                               |
                               --------->我.卒()

反正今天打了一上午的电话就对了。

没办法,找了几个数据恢复软件,找到的都是我有意删掉的文件,包括那个很昂贵的data drill……

于是用了个工具把整个硬盘导出来了...用十六进制编辑器能找到想要的一些数据……

我现在准备扔到室友的电脑上一起跑...徒手撸集群(2333这也是集群),大概就是这样了。
所以这就是标题所问的问题。抱歉心里还是很难受可能在阅读上给您带来困难了。

@机智的五花肉 够详细吧

另外,这里有导致出错的applescript,https://devforums.apple.com/message/1086093。
请不要鄙视我拙劣的英语,指出来就好。


grep --byte-offset --only-matching --text pattern file

cat file | ruby -e 'x=readlines*"";puts x.scan(/PATTERN/m).reduce([[-1]*3]) { |a, w| a << [x.index(w, a[-1][0]+1), w.size, w]}[1..-1].map { |x| x*"," }*"\n"'

cat file | perl -le '$_ = $x = join "", <>; $i=-1;for(/PATTERN/gs){$i=index $x, $_, $i+1; print join ",", $i, length, $_}'

还是 Perl 代码短

【热门文章】
【热门文章】