将Mongode Import的CSV转换为TSV格式

时间:2017-09-15 17:09:06

标签: csv command-line

我有这个文件csv文件。

0161-1#CT-00#1;Others;0
0161-1#CT-01#1;Class;1
0161-1#CT-02#1;Property;2
0161-1#CT-03#1;Feature;3
0161-1#CT-04#1;Representation;4
0161-1#CT-05#1;Unit of Measure;5
0161-1#CT-06#1;Qualifier of Measure;6
0161-1#CT-07#1;Property Value;7
0161-1#CT-08#1;Currency;8
0161-1#CT-09#1;Data Type;9

当我运行此命令将带分号的csv转换为tsv文件时:

我的Mac终端上的

tr ";" "\t" < testing.csv。它只打印出这样的文本,它不保存文件。

0161-1#CT-00#1  Others  0
0161-1#CT-01#1  Class   1
0161-1#CT-02#1  Property    2
0161-1#CT-03#1  Feature 3
0161-1#CT-04#1  Representation  4
0161-1#CT-05#1  Unit of Measure 5
0161-1#CT-06#1  Qualifier of Measure    6
0161-1#CT-07#1  Property Value  7
0161-1#CT-08#1  Currency    8
0161-1#CT-09#1  Data Type   9%                                                                                                                                                                                                            ➜  eotd-cleaned

所以看起来它有效,但文件不能保存。我需要在此命令行中添加什么来将其保存到此文件或新文件?

1 个答案:

答案 0 :(得分:2)

许多小型unix文本处理工具都设计用于管道,并假设最终用户将使用输出重定向创建新文件,即

tr ";" "\t" < testing.csv > testing.tsv

如果您需要/想要保留相同的文件名,并且您可以删除原始源文件,那么安全的做法是添加一个条件rm命令,例如

tr ";" "\t" < testing.csv > testing.tsv && rm testing.csv

或者您可以使用

重命名(mv)文件
tr ";" "\t" < testing.csv > testing.tsv && mv testing.tsv testing.csv

&&表示“只有在前一个命令完成且没有错误时才执行下一位。

还有许多其他unix / linux文本实用程序可以进行此替换,最干净的是

sed -i 's/;/<t>/g' testing.csv

通过按键盘上的Tab键,您可以使用真正的制表符替换命令中的<t>

当您使用Mac时,您需要指定备用文件名作为-i的一部分,例如

sed -i'' 's/;/<t>/g' testing.csv

''表示不会真正创建备份文件。您可以sed -i.bak获取真实的备份文件。

存在其他解决方案,因此请尝试在此处搜索“文件中的文本替换”。

IHTH