2017-09-15 44 views
1

我有這個文件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 

所以它看起來像它的工作,但該文件不保存。我需要在這個命令行上添加什麼來將它保存到這個文件或新的?

回答

2

許多小型的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