我想在文件中的字母后面插入空格

时间:2012-08-08 07:01:28

标签: string perl

F1.txt

tom1 a1 b1 c1
bob2 d2 e2 f2

结果

F2.txt

a1 b1 c1 tom1
d2 e2 f2 bob2

各位大家好,任何人都可以帮我解决这个问题。我的工作是将文件中每行的第一个单词移到给定文件的该行的最后一个位置。它如F2.txt所示。这是我尝试过的代码,但是没有得到所需的输出。

use strict;
use warnings;

open FILE1, "<final.l";
open FILE2, ">>finala11.l";

my($line, @line);
while (<FILE1>) {
  $line=$_;
  chomp($line);
  @line = split("\t"," ",$line);

  push(@line, shift(@line));
  print FILE2 @line,"\n";
}

close (FILE1);
close (FILE2);

我在此文件中获得的输出是:

F3.txt

a1b1c1tom1
d2e2f2bob2 

但预期输出如F2.txt所示。你能帮助我找出代码中的错误来获得理想的结果吗?

3 个答案:

答案 0 :(得分:2)

您可以使用join:

print FILE2 join("\t", @line),"\n";

或:

print FILE2 "@line\n";

答案 1 :(得分:0)

use strict;
use warnings;

open FILE1, "<final.l";
open FILE2, ">>finala11.l";

my ($line, @line);
while () {
  $line = $_;
  chomp($line);
  @line = split(" ", $line, 2);     # <<

  push(@line, "\t", shift(@line));  # <<
  print FILE2 @line, "\n";
}

close(FILE1);
close(FILE2);

谢谢我刚刚更正了已突出显示并获得所需输出的行

答案 2 :(得分:0)

将autosplit与数组切片结合使用:

$ perl -F/\t/ -lane 'print join "\t", @F[1..$#F,0]' f1.txt > f2.txt