使用bash中的sed提取两个字符串之间的字节流

时间:2015-08-21 05:59:38

标签: bash shell awk sed dd

我有一个包含多个图像的二进制文件。每个图像区域都以ASCII字符串开头。问题是字符串之间的字节不是文本/ ASCII而是平面二进制字节。 所以“string1”和“string2”之间的二进制数据是我的image-1,依此类推。 如何在bash中提取每张图像?可能正在使用'sed'? 请帮助。

1 个答案:

答案 0 :(得分:0)

这是一个perl版本。将其放入文件&#34; myprog&#34;,将标题编辑为您想要的内容chmod +x myprog,然后执行./myprog <yourdatafile。它会创建文件out1out2等。它假定文件以标题开头,或者您可以忽略第一部分。

#!/usr/bin/perl
use strict;
my $data = join('',<STDIN>);
my $i = 1;
my $header = "abc";
foreach my $part (split($header,$data)){
        open(OUT,">out$i");
        print OUT $header,$part;
        close(OUT);
        $i++;
}