获取文件名并在同一个txt文档的每一行之前写入它?

时间:2014-04-03 18:59:25

标签: regex sorting text insert

我可以使用什么程序获取txt文档的文件名,并在同一文档的每一行之前写入文件名。 例如:

文件名:document1.txt

文档行内的

是这样的:

1.-text text text
2.-text text text
3.-text

我希望它们是自动的:

document1.txt 1.-text text text
document1.txt 2.-text text text
document1.txt 3.-text

我这样做是为了对数千个txt文件的内容进行排序,每一行都用数字列出,所以如果我合并它们,那么当我对内容进行排序时,我不会失去秩序。 如果我能够输入文件的名称,如果我对合并的内容进行排序就可以了。

因为document1可以使用英语 但另一份文件1是西班牙语 但两者都列出了相同的行数。

我想在一个文档中合并它们,但是超过3万txt 在合并所有这些之后,我想要英语和西班牙语版本。

document1.txt 1.-(english) text text text
document1.txt 1.-(spanish) text text text
document1.txt 2.-(english) text text text
document1.txt 2.-(spanish) text text text
document1.txt 3.-(english) text
document1.txt 3.-(spanish) text

在英文文档的每一行中我都是这样的:

1.- <english> text ........
2.- <english> text .......
etc

并且西班牙文件的每一行都是这样的:

1.- <spanish> text ........
2.- <spanish> text .......
etc

我不知道如何实现这一目标,请你能提出一些不太难的建议吗? 我不是程序员,我想知道是否有软件可以做到这一点。

我只需要在文档的每一行之前放置文件的名称。 像脚本一样。

非常感谢,我试着详细解释我的问题,但英语不是我的母语。如果有任何错误,我很抱歉。 来自墨西哥的问候。

1 个答案:

答案 0 :(得分:1)

这是一个完成工作的perl脚本:

#!/usr/bin/perl
use warnings;
use strict;

foreach my $file (glob("*.txt"))
{
        my $newfile = $file;
        $newfile =~ s/\.txt$/_modified.txt/;
        open IN,"<$file";
        open OUT, ">>$newfile";
        while (<IN>) { print OUT $file . " " . $_ }
        close IN;
        close OUT;
}

它使用您在同一目录中的.txt文件执行的操作,并将结果写入* _modified.txt(以便不破坏您的原件)