无法简单地使用 tr 将制表符分隔变量文件转换为逗号分隔变量文件

无法简单地使用 tr 将制表符分隔变量文件转换为逗号分隔变量文件

关于这个txt文件,最好将其描述为制表符分隔的 .txt 文件,其中包含内容的行之间有空行:

人们会认为跑步

cat goods.txt | tr "\t" "," > output.csv应该将 .txt 文件干净地转换为 .csv。

(按照这个堆栈溢出解决方案

但是,我观察到值和文本转移到错误的列中:

在此输入图像描述

在其他情况下,数字在列之间分开:

在此输入图像描述

我不确定我忽略了什么?实现此处所需的文件转换的正确方法是什么?

答案1

使用米勒(https://github.com/johnkerl/miller

mlr --t2c cat goods.txt >goods.csv

你会得到这个输出https://gist.github.com/aborruso/fab6a48a390a9c54de55dece9141bea6

是你想要的吗?

答案2

以下 csvkit 实用程序将 .txt 干净地转换为 .csv 文件:

csvformat -t 货物.txt

信用额归入 reg惠而浦论坛

有关 csv 格式的更多信息这里(将 CSV 文件转换为自定义输出格式)。

另请注意,根据csvkit 手册:

===========

请注意,每个 csvkit 工具都会执行以下操作:

  • 删除可选的引号字符,除非设置了 –quoting (-u) 选项来更改此行为

  • 如果使用 –delimiter (-d) 或 –tabs (-t) 选项设置输入分隔符,则将字段分隔符更改为逗号

  • 将记录分隔符更改为换行符

  • 如果使用 –quotechar (-q) 选项设置引号字符,则将引号字符更改为双引号

  • 如果使用 –encoding (-e) 选项设置输入编码,则将字符编码更改为 UTF-8

===========

相关内容