2012-08-13 78 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