2012-08-13 80 views
0

我有兩個CSV文件,即test1.csvtest2.csv由自定義分隔符管道標誌(|)分隔。我通過diff命令得到他們的變化如下修補csv文件生成錯誤

diff test2.csv test1.csv > test.patch 

現在我在做什麼,以獲得補丁如下

patch test.csv < test.patch 

創建第三個文件test.csv並運行補丁但當我運行這個補丁命令我得到以下錯誤。

patching file test.csv 
Hunk #1 FAILED at 1. 
1 out of 1 hunk FAILED -- saving rejects to file test.csv.rej 

你能告訴我這個方法有什麼問題嗎?

  • 編輯: 我有兩個名爲test1.csv和test2.csv的文件。 命令被以下面的方式執行

DIFF test2.csv test1.csv> test.patch

(補丁創建i之後創建一個新 文件 'test.csv')

patch test.csv < test.patch

+0

你確定這是一個文件嗎?一個被稱爲'test.csv',但其他被稱爲'testN.csv'。你確定你正確地生成了補丁嗎? (嘗試將參數的順序交換爲diff,或者在應用它時調用'patch -R'來反轉修補程序)。除此之外看起來很正常,但這裏沒有足夠的細節來重現或自己看到你的問題。 – Flexo 2012-08-13 07:33:37

+0

該補丁是創建第三個文件。我不是在testN.csv文件上應用它,我需要將這兩個文件的差異存儲在第三個文件中,以便獲取補丁文件,然後創建一個新文件(手動),然後我將代碼修補爲新創建的文件得到diff輸出 – HardCode 2012-08-13 07:52:24

+0

@HardCode,用順序執行的命令更新你的問題。 – tuxuday 2012-08-13 07:59:44

回答

0

在你的前。 test.csv應該類似於test2.csv。看下面的例子。

$ cat f1.csv 
a 
b 
c 
z 
$ cat f3.csv 
a 
b 
c 
d 
$ diff f1.csv f3.csv > diffop 
$ cp f1.csv tst 
$ cat tst 
a 
b 
c 
z 
$ patch tst diffop 
patching file tst 
$ cat tst 
a 
b 
c 
d 
+0

看看f1.csv和f3.csv的內容我只想在結果文件中有「z」條目。 – HardCode 2012-08-13 10:27:07

+0

由結果文件表示'tst',始終使用名稱以便人們易於理解。 – tuxuday 2012-08-13 10:41:53

+0

是的我的意思是結束文件,在這種情況下,「tst」,我們可以將其更改爲「.csv」擴展,以便它匹配其父(> f1.csv)結構 – HardCode 2012-08-13 10:49:06