Я ищу лучший способ добавить 2 к содержимому в первом столбце файла и продолжать добавлять n раз. Это может быть однострочная программа.
Входной файл (sparc_test.export, в реальном файле более 3000 строк):
20000 cmp_top.iop.sparc0.exu.alu.byp_alu_rcc_data_e[6]
20000 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[51]
20000 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[3]
20000 cmp_top.iop.sparc0.exu.alu.shft_alu_shift_out_e[18]
20000 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[17]
20000 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[43]
Ожидаемый выходной файл (допустим, он запускается 3 раза):
20000 cmp_top.iop.sparc0.exu.alu.byp_alu_rcc_data_e[6]
20000 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[51]
20000 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[3]
20000 cmp_top.iop.sparc0.exu.alu.shft_alu_shift_out_e[18]
20000 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[17]
20000 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[43]
20002 cmp_top.iop.sparc0.exu.alu.byp_alu_rcc_data_e[6]
20002 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[51]
20002 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[3]
20002 cmp_top.iop.sparc0.exu.alu.shft_alu_shift_out_e[18]
20002 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[17]
20002 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[43]
20004 cmp_top.iop.sparc0.exu.alu.byp_alu_rcc_data_e[6]
20004 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[51]
20004 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[3]
20004 cmp_top.iop.sparc0.exu.alu.shft_alu_shift_out_e[18]
20004 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[17]
20004 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[43]
Однострочный perl-код для добавления 2 в первый столбец:
perl -pe 's/(\d+)/$1 + 2/e' sparc_export.test
Итак, я использовал этот код и добавил (‹‹) 3 раза, но кажется, что это не нормально, и я думаю, что есть лучший способ с однострочным кодом. Любая помощь приветствуется.
мой код perl (test.pl)
#!/usr/bin/perl
use strict;
use warnings;
my $fin;
my $foutput;
for (my $i=0; $i < 3; $i++) {
open $fin, '<', 'sparc_export.test' or die "Can't open file: $!";
open $fout, '>>', 'sparc_export.test.out' or die "Can't open file: $!";
while (<$fin>) {
s/(\d+)/$1 + 2/e;
print $fout $_;
}
close $fout;
close $fin;
rename 'sparc_export.test.out', 'sparc_export.test' or die "Failed to rename: $!";
system $bin, @args;
}