perl 在某一个匹配行前面添加一行新的内容

perl 在某一个匹配行前面添加一行新的内容,第1张

#!/usr/bin/perl

$file = shift

$matched = 0

$newFile = "balabalabala_tmp"

die "usage: ./test.pl filename\n" if !defined $file

open FD, "<$file" or die "can't open $file:$!"

open TMP, ">$newFile"

select TMP

while(<FD>) {

      $line = $_

      if(!$matched &&/nameserver/) {

              print "nameserver 8\n"

              $matched = 1

      }

      print $line

}

close FD

close TMP

unlink $file

rename $newFile, $file

做个marker,从文件中每读入一行就让marker加1.当marker跟你的x行相同的时候。插入你需要插入的内容。

举个简单的例子:

open IN,"f:/a.txt"||die $! #读入文件

open OUT,">f:/b.txt"||die $!#输出文件

$marker=0

$x=5#要插入的行

while(<IN>){

$marker++

if($marker==5){

print OUT "5\tlala\n"

}

print OUT $_

}

当然你可把他写成一个函数,传参进去,那样更加灵活。希望有帮助~~。

open F1,"WN.txt" or die $!

@array1=<F1>

open F2,"WN_1.txt" or die $!

@array2=<F2>

open o,">WN_OK.txt" or die $!

$k=-2$count=-1     

foreach(@array2){

        $count++ $k+=4

if(/LOT/){print o "$_" $i=$count-($k/5) print o "$array1[$i]"}

else {print o $_}

         }#还有很多其他方法的,可以多尝试。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11692130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存