在文本文档中找到各种字符



我有一个CSV文档,其中有47001行。但是,当我在Excel中打开它时,只有31641行。

我知道47001是正确的行数;这是数据库表的导出,我知道它的大小为47001。此外:wc -l my.csv返回47001。

所以,Excel的解析失败。我怀疑本文档中某处有一些时髦的控制或空格字符。

我如何找出某些文档中使用的各种字符?

例如,考虑此输入文件:ABCAAAaaan
我希望文件中使用的字符字母为: ABCan

也许如果我们压缩它,我们可以以某种方式阅读霍夫曼树?

我怀疑将UTF-8角色品种与ASCII角色品种进行比较是教育性的。例如:Excel可能会在ASCII中解析多字节字符,因此将某些字节解释为控制编码点。

如果您在linux上,我们去这里(除了linux外,背后的逻辑可能是相同的,我给出了命令):

sed 's/./&n/g' | sort -u | tr -d 'n'

发生了什么: - 首先用字母替换所有字母,然后是" n" [新线] - 然后对所有caracter进行排序,然后打印UNIQ出现 - 删除所有" n"

然后输入文件:

ABCAAAaaa

将变成:

A
B
C
A
A
A
a
a
a

排序之后:

a
a
a 
A
A
A
A
B
C

然后在uniq:

之后
A
B
C
a

最终输出:

aABC

您可以从原始文件中删除一些列,而这些列不太可能通过通过被解析并再次写出的周期来更改。G。纯文本列,例如名称或数字。名字很棒。然后让此文件通过周期并将其与原始文件进行比较:

这是代码:

cut -d, -f3,6,8 > columns.csv

这假定第3、6和8列是名称列,并且逗号是分离器。根据您的输入文件调整这些值。使用单列也可以。

现在致电Excel,解析文件columns.csv,再次将其写出为CSV文件columns2.csv(当然具有相同的分离器)。然后:

diff columns.csv columns2.csv | less

诸如meld而不是diff之类的工具也可能方便地分析差异。

这将向您显示哪些线路经历了→解析→转储周期的更改。希望它只会影响您要寻找的线。

相关内容

  • 没有找到相关文章

最新更新