2014-04-03 34 views
0

我可以使用什么程序来获取txt文档的文件名,并在同一文档的每行之前写入文件的名称。 例如:获取文件名并写在同一个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是西班牙语 ,但两者列出的行数相同。

我想将它们合并到一个文档中,但在合并所有文档后超过30,000个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

这里是一个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(让您原件不被破坏)

+0

非常感谢你,我不知道perl,但我看了一些视频。我应该把脚本放在同一个文件夹中吗?我必须改变你给的脚本中的某些东西吗? ,我会安装perl。 – alex

+0

学习Perl,又名骆驼书...对我来说比我在学校读过的任何书都更有用:) 再加上它是一种简单的语言,无论你的背景是 – Jarmund

+0

还是因为你不知道Perl,我猜你是在一台Windows机器上,在这种情况下,我可以通过www.activestate.com推荐activeperl发行版 – Jarmund

相关问题