2011-10-03 84 views
1

最近我一直在使用的文本文件(CSV)與很多線條10-60k,像這樣最佳(最快)的方式來解析和修改文件

id1,id2 
id3,id1 
id81,id13 
... 

而且大部分的時間,我需要以陣列的形式來提取此,情報:

id1,id2,id3,id1,id81,id13 

或者有時,惟一元素數組:

id1,id2,id3,id81 

然後RESU我的代碼(java)使用它來執行某些操作。

現在,大部分時間我都會編寫一個java函數來完成這項任務,從文件讀取,邏輯,然後返回Id列表。

是否有更好更快的方法來實現這一點,也許通過命令行?

更新:

如果有人問我建立這本來是要讀取一個文件,並用它做什麼應用程序,我肯定會用Java寫的是邏輯,但在我來說,我必須去通過我從數據倉庫獲得的大量文本文件,從中提取相關信息,然後通過基於Java的應用程序運行它。

現在,這只是我的實驗和評估我的應用程序。

+1

你需要這個數組被消耗什麼?爲什麼命令行工具會更好?它仍然需要從磁盤讀取文件,解析文件,並將數組存儲在內存中,就像使用非命令行代碼塊一樣。 –

+0

,因爲我經常做這些小測試,而不是真正的應用程序的一部分。但要對數據進行實驗。 – zengr

回答

1

我複製你輸入一個文件,test.csv:現在

$ cat test.csv 
id1,id2 
id3,id1 
id81,id13 

,與 'TR' 實用工具,你可以這樣做:

$ cat test.csv | tr '\n' ',' | tr -d ' ' 

,你必須:

id1,id2,id3,id1,id81,id13 
+0

那麼sed或awk呢?它們是否適合這種用例? – zengr

+0

是的,但它看起來更復雜一點:http://stackoverflow.com/questions/1251999/sed-how-can-i-replace-a-newline-n –

0

除非你的Java代碼做了一些愚蠢的事情,否則它將處於與其他任何事情相同的速度。

命令行工具沒有任何魔力,它們會使它們比你的代碼更快。

相關問題