在perl中查找并替换文本文件中的字符串

时间:2016-01-04 20:40:27

标签: perl

我真的不知道怎么做这个我尝试了很多方法而且我不知道为什么没有方法。这是我试过的样本......

{
    open my $fh1, '<', 'hex1.txt';
    open my $fh2, '<', 'hex2.txt';

    until ( eof $fh1 or eof $fh2 ) {

        my @l1 = map hex, split //, <$fh1>;
        my @l2 = map hex, split //, <$fh2>;

        my $n = @l2 > @l1 ? @l2 : @l1;

        my @sum = map {
            no warnings 'uninitialized';
            $l1[$_] + $l2[$_];
        } 0 .. $n - 1;

        @sum = map { sprintf '%X', $_ } @sum;

        open my $out, '>', 'hexsum.txt';
        print {$out} @sum, "\n";
    }
    close $fh1;
    close $fh2;
}

{

    open my $IN,  "<", 'hexsum.txt';
    open my $OUT, ">", 'sym.txt';
    while ( my $linie = <$IN> ) {
        $linie =~ s/40/20/g;
        print $OUT $linie;
    }
    close $IN;
    close $OUT;
}

{
    my $input = do {
        open my $in, '<', 'hexsumspace.txt';
        local $/;
        <$in>;
    };

    open my $out, '>', 'sym.txt';
    print $out pack 'H*', $input;
}

我想在任何地方改变,我发现价值为40的价值为20 ......

2 个答案:

答案 0 :(得分:3)

use strict;
use warnings;

open my $OUT, ">", 'output.txt';
open my $IN, "<", 'input.txt';
while (my $line = <$IN>) {
    $line =~ s/40/20/g;
    print $OUT $line;
}
close $IN;
close $OUT;

答案 1 :(得分:3)

这是来自命令行的perl one liner:

perl -pe 's/40/20/g' input.txt > output.txt