如何用bash脚本替换文件中的数据?

时间:2016-01-21 10:33:10

标签: bash

我需要从bash脚本修改存储在磁盘中的二进制文件的数据。怎么做?

(例如,我需要打开一个100字节大小的文件,并用0xff替换第50字节位置的数据0x00)

我试过谷歌,但无法找到答案。任何帮助表示赞赏。

谢谢。

1 个答案:

答案 0 :(得分:1)

Perl救援:

#!/usr/bin/perl
use warnings;
use strict;

use Fcntl qw{ SEEK_SET SEEK_CUR };

my $pos = 50;

open my $BIN, '+<:raw', shift or die $!;
seek $BIN, $pos - 1, SEEK_SET or die "Can't seek into file.\n";

my $size = read $BIN, my $data, 1;
die "Can't read 50th byte from file.\n" unless $size;

if ("\0" eq $data) {
    seek $BIN, - 1, SEEK_CUR;
    print {$BIN} "\xff";
    close $BIN;
} else {
    warn "Nothing to replace, 50th byte isn't a zero.\n";
}
  • +<以读/写模式打开文件。
  • :raw删除所有IO图层(例如CRLF翻译)
  • seek以文件句柄重新排列位置。