+ -
当前位置:首页 → 问答吧 → 怎样添加缺少的行,用空白填充???

怎样添加缺少的行,用空白填充???

时间:2010-12-20

来源:互联网

本帖最后由 nb509 于 2010-12-20 10:15 编辑

我有一个文本,每行用\t隔开,比如:第4列的数字代表每一行所在的行数。现在的问题是,缺少的行数,我想用空白行填充。原来文本在1000万行以上,需要写入到另一个文件。

如:
a   b   c    1
1   s   e    3
2   f    e    6
输出:
a   b   c    1

1   s   e    3


2   f    e    6

作者: nb509   发布时间: 2010-12-20

本帖最后由 nb509 于 2010-12-20 11:08 编辑
  1. for($i=1;$i<=10;$i++)
  2. {open(FILE,"t.txt") or die"$!";open(OUT,">>temp1.txt") or die"$!";

  3. while (<FILE>) {

  4. if (/^(?:\S+\t){3}(\S+)/ and $1 eq $i){print OUT $_;} else{print "\n";}

  5. }
  6. close FILE;
  7. close OUT; }
复制代码
这里的 else{print "\n";} 打印了很多\n,我是想如果在while循环中执行一次{print OUT $_;} ,就不else。如果没有执行{print OUT $_;} 执行一次else{print "\n";}。

作者: nb509   发布时间: 2010-12-20

perl -ane 'print "\n"x($F[$#f]-$a-1);print;$a=$F[$#F]' file

作者: 99超人   发布时间: 2010-12-20

  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. my $file = "Your File";

  5. open(F,$file);

  6. my $line = 0;

  7. while(<F>){
  8.     $line++;
  9.     my @item = split("\t",$_);
  10.     while($line < $item[3]){
  11.             print "\n";
  12.         $line++;
  13.     }
  14.         print $_;
  15. }
  16. close F;
复制代码

作者: phoenix_perl   发布时间: 2010-12-20

$.不会和输出行(文件的第四列)匹配上.

而且code最好写的清晰一些,不然不好维护和修改.

作者: phoenix_perl   发布时间: 2010-12-20