Shell 使用perl重复固定次数的行

Shell 使用perl重复固定次数的行,shell,perl,scripting,Shell,Perl,Scripting,我有一个文件,我想在它下面重复一些固定数量的行两次,并在第二行之后添加一个循环命令,在第二行结束后结束循环。 所以我的文件是 a4 b2 c3 e6 a1 b2 c3 d4 g5 h6 i7 j8 h9 i10 j11 k12 这应该成为 a4 b2 c3 e6 a1 b2 c3 d4 a1 b2 c3 d4 a1 b2 c3 d4 loop g5 h6 i7 j8 endloop h9 i10 j11 k12 我必须对16个文件执行此操作。我尝试使用sed命令,但它不起作用。我正在考虑如何

我有一个文件,我想在它下面重复一些固定数量的行两次,并在第二行之后添加一个循环命令,在第二行结束后结束循环。 所以我的文件是

a4 b2 c3 e6
a1 b2 c3 d4
g5 h6 i7 j8
h9 i10 j11 k12
这应该成为

a4 b2 c3 e6
a1 b2 c3 d4
a1 b2 c3 d4
a1 b2 c3 d4
loop
g5 h6 i7 j8
endloop
h9 i10 j11 k12
我必须对16个文件执行此操作。我尝试使用sed命令,但它不起作用。我正在考虑如何使用perl


我试图使用perl-ne'print$\ux 3'文件,但它在文件中的所有行上运行


/ikegami建议的编辑/

试试这段代码。它可以解决您的问题:

for (my $i = 0; <>; $i++) {
        print;
        if ($i == 1) {
                print;
                print;
                print "loop\n";
        } elsif ($i == 2) {
                print "endloop\n";
        }       
}
(我的$i=0;;$i++)的
{
印刷品;
如果($i==1){
印刷品;
印刷品;
打印“循环\n”;
}elsif($i==2){
打印“结束循环\n”;
}       
}

(需要关闭才能重新启动
$。
的行计数)

您遇到了什么问题?我试图使用perl-ne“print$\ux 3”文件,但它会对文件中的所有行进行操作。这是您应该考虑的问题。
perl -wpe'if ($.==2) { $_ x= 3 } elsif ($.==3) { $_ = "loop\n${_}endloop\n" }' <infile >outfile
perl -i -wpe'close ARGV if eof; if ($.==2) { $_ x= 3 } elsif ($.==3) { $_ = "loop\n${_}endloop\n" }' file1 file2 file3