2011-10-03 82 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代码做了一些愚蠢的事情,否则它将处于与其他任何事情相同的速度。

命令行工具没有任何魔力,它们会使它们比你的代码更快。

相关问题