将CSV转换为用于Mongo Import的TSV格式

将CSV转换为用于Mongo Import的TSV格式

问题描述:

我有这个文件csv文件。将CSV转换为用于Mongo Import的TSV格式

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文件:

tr ";" "\t" < testing.csv在我的Mac终端。它只打印出这样的文字,它不保存文件。

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 

所以它看起来像它的工作,但该文件不保存。我需要在这个命令行上添加什么来将它保存到这个文件或新的?

许多小型的unix文本处理工具都被设计成在流水线中工作,并且假定最终用户将使用输出的重定向来创建新文件,即,

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

如果您需要/想保持相同的文件名,你与删除您的原始源文件确定,那么安全的事情就是添加一个condtional 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 

,你必须在命令与真正的标签字符替换<t>,按Tab键在你的键盘上。

当你使用的是Mac,你需要指定备份文件名作为-i的一部分,就像

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

''手段并不真正创建一个备份文件。你可以为sed -i.bak做一个真实的备份文件。

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

IHTH