使用输入文件行号写入多个输出文件

时间:2014-06-26 09:33:44

标签: perl file file-io

是的,我知道标题可能不是很清楚。如果您有关于更改它的建议,请告诉我。

这是我的问题: 我有一个文件(我们称之为File_1),其中有几行,每一行都是一个句子。

对于前: File_1内容:

*Line 1*: I'm very happy today.
*Line 2*: We're going to the cinema.
*Line 3*: I'll write on stackoverflow today!

等等..

我的问题是,如何从每行的内容创建多个文件? 所以对于前者。 file_1将被拆分为:

*Line_1_content.txt* : I'm very happy today.
*Line_2_content.txt* : We're going to the cinema.

等等......

我真的不知道怎么做。我从来没有遇到过这种问题。 我将非常感谢你的帮助。

3 个答案:

答案 0 :(得分:3)

use strict;
use warnings;
use autodie;

while ( <> ) {
    open my $fh, '>', "${.}.txt";
    print $fh $_;
}

$.对应于当前行的编号。

您将此程序称为:perl prog.pl your_file

答案 1 :(得分:0)

如果我理解正确的问题:

use strict;
use warnings;
use autodie;

open(my $fh, '<', 'example.txt');
while (my $line = <$fh>) {
  open(my $line_fh, '>', "line_${.}_file.txt");
  print $line_fh $line;
  close($line_fh);
}
close($fh);

应该做你想做的事。

(尽管这样做可能并没有像评论所指出的那样有意义)

答案 2 :(得分:0)

你甚至不需要一个程序: - )

perl -ne 'open my $fh, ">", "Line_${.}_content.txt"; print $fh $_"' your_file_here

或者,或许,

perl -pe 'open my $fh, ">", "Line_${.}_content.txt"; select $fh' your_file_here