我有这个文件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
所以看起来它有效,但文件不能保存。我需要在此命令行中添加什么来将其保存到此文件或新文件?
答案 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