将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