【问题标题】:How replace data in a file from a bash script? [duplicate]如何从 bash 脚本替换文件中的数据? [复制]
【发布时间】:2016-01-21 10:33:09
【问题描述】:

我需要从 bash 脚本修改存储在磁盘中的二进制文件的数据。如何做到这一点?

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

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

谢谢。

【问题讨论】:

    标签: bash


    【解决方案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";
    }
    
    • +&lt; 以读/写模式打开文件。
    • :raw 删除任何 IO 层(例如 CRLF 转换)
    • seek 回退文件句柄中的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-21
      • 2014-02-16
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多