首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找CSV文件中的差异?

如何查找CSV文件中的差异?
EN

Stack Overflow用户
提问于 2022-03-06 15:32:12
回答 1查看 799关注 0票数 0

我有两个csv文件,如果用TextEdit打开,它们是完全相同的。但是,当使用'diff‘命令运行终端时,它显示了一些我无法确定的差异。

代码语言:javascript
复制
MacBook-Pro-2 Desktop % diff goodcsv.csv completecsv.csv
1c1
< AccountNo.,PromptPay ID,Account Name,Amount,Description
---
> AccountNo.,PromptPay ID,Account Name,Amount,Description
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-06 18:55:15

我很确定这是一个BOM表在其中一个文件的开头。

Diff告诉你区别是第一行,第1字符:1c1

我复制了您的标题并创建了第一行:

代码语言:javascript
复制
AccountNo.,PromptPay ID,Account Name,Amount,Description
1,2,Acme,2000.00,For a foo

然后,我添加了一个BOM,并将其保存为另一个文件:

代码语言:javascript
复制
% gocsv clean --add-bom input.csv > input_bom.csv

现在,当我把这两件事分开的时候,我得到了你的结果:

代码语言:javascript
复制
% diff input.csv input_bom.csv
1c1
< AccountNo.,PromptPay ID,Account Name,Amount,Description
---
> AccountNo.,PromptPay ID,Account Name,Amount,Description

对于BSD (macOS终端),您可以使用lesshexdump可视化BOM。我发现less对我的输出更直接:

代码语言:javascript
复制
% less input_bom.csv
<U+FEFF>AccountNo.,PromptPay ID,Account Name,Amount,Description
1,2,Acme,2000.00,For a foo

FEFF是字节顺序标记字符的Unicode代码点。

hexdump将为您的文件提供完整和未修饰的真相:

代码语言:javascript
复制
% hexdump -C input_bom.csv
00000000  ef bb bf 41 63 63 6f 75  6e 74 4e 6f 2e 2c 50 72  |...AccountNo.,Pr|
00000010  6f 6d 70 74 50 61 79 20  49 44 2c 41 63 63 6f 75  |omptPay ID,Accou|
00000020  6e 74 20 4e 61 6d 65 2c  41 6d 6f 75 6e 74 2c 44  |nt Name,Amount,D|
00000030  65 73 63 72 69 70 74 69  6f 6e 0a 31 2c 32 2c 41  |escription.1,2,A|
00000040  63 6d 65 2c 32 30 30 30  2e 30 30 2c 46 6f 72 20  |cme,2000.00,For |
00000050  61 20 66 6f 6f 0a                                 |a foo.|
00000056

前三个字节,ef bb bf,是构成BOM的UTF-8编码字节序列;您也可以看到一些东西在那里,但不能从三个领先的点,...AccountNo打印。

我使用GoCSV的打扫命令来添加BOM;您可以使用它的--strip-bom选项来消除它。如果您在命令行上使用CSV进行任何操作,那么GoCSV是一个非常棒的工具;它是为macOS、英特尔和ARM预置

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71371669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档