2014-04-03 67 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

相關問題