2015-02-11 43 views
0

我正在研究PHP中的一個瑣事腳本,並且遇到了無法通過它的問題。將2個文本文件的內容合併到第三個文本文件中 - 逐行

我有兩個txt文件,其中一個帶有問題和其他答案。

的問題,文件看起來是這樣的:

"How many arms a person has" => 
"How many legs a person has" => 

的答案文件看起來是這樣的:

"2", 
    "2", 

是否有可能從答案文件到問題的文件得到的東西移動或複製線像這樣在一個單一的文件?

"How many arms a person has" => "2", 
"How many legs a person has" => "2", 
+0

爲什麼地球上,你會採取批量,如果你已經在一個更高層次的語言如工作PHP的? – dbenham 2015-02-11 12:34:06

+0

@dbenham我原來的問題是指php,但因爲我設法讓它與批處理,它得到了修改。 – Allkin 2015-02-11 12:54:51

回答

2

假設文件1的內容是A.TXT和文件2的含量是b.txt和結果示於c.txt預期,嘗試在Windows批處理文件(比如merge.bat):

@echo off 
setlocal EnableDelayedExpansion 

set i=0 
for /F "delims=" %%a in (a.txt) do (
    set /A i+=1 
    set a[!i!]=%%a 
) 

set i=0 
for /F "delims=" %%a in (b.txt) do (
    set /A i+=1 
    set b[!i!]=%%a 
) 

for /L %%i in (1,1,%i%) do echo !a[%%i]! is from !b[%%i]!>> c.txt 
ENDLOCAL 

編輯答案以解決多個循環問題。

說明:

setlocal EnableDelayedExpansion啓用延遲的環境變量擴展,直到遇到匹配的endlocal命令,無論之前的SETLOCAL命令設置的。

這使得翻譯:

!a[1]! is from !b[1]!每條線到其各自的conetent填充在陣列ab其由文件a.txtb.txt填充。

+0

感謝您的回答。這就是c.txt'''一個人有多少臂'=>「2」 「一個人有多少臂」=>「2」 「一個人有多少腿」=>「2 「 」一個人有多少腿「=>」2「' 每個問題都發布兩次。 – Allkin 2015-02-11 10:29:55

+0

對於問題文件中的每個問題,它都會從答案文件的每個答案中發佈一行。 – Allkin 2015-02-11 10:37:32

+0

已更新的代碼請檢查並讓我知道... – 2015-02-11 10:53:04

0

你可以在PHP中是這樣的:

<?php 

$questions = array(); 
$answers = array(); 

$questionFile = fopen("path/to/questions.txt", "r"); 
$answerFile = fopen("path/to/answers.txt", "r"); 

while($row = fgets($questionFile)) { 
    $questions[] = $row; 
} 

while($row = fgets($answerFile)) { 
    $answers[] = $row; 
} 

fclose($questionFile); 
fclose($answerFile); 

if(count($questions) === count($answers)) { 
    $mergingFile = fopen("path/to/thirdFile.txt", "w+"); 

    foreach($questions as $key => $question) { 
     fwrite($mergingFile, $question . $answers[$key] . "\r\n"); 
    } 

    fclose($mergingFile); 
} 
0

非常簡單的任務我JREPL.BAT utility - 執行正則表達式查找/替換文本混合JScrpit /批處理腳本。 JREPL.BAT是純粹的腳本,可以從任何Windows XP機器上的本機運行。

jrepl "^.*" "$0+' '+stdin.ReadLine()" /j /f questions.txt /o merged.txt <answers.txt 

上面的命令都從由/F選項,並且還從重定向標準輸入指定的文件中讀取輸入。 /J選項將替換字符串視爲每個匹配執行的JScript代碼。

如果問題可能會跨越多行,那麼你可以澄清搜索字符串,以獲得corrrect結果:

jrepl "^.*==>$" "$0+' '+stdin.ReadLine()" /j /f questions.txt /o merged.txt <answers.txt 
相關問題