最佳(最快)的方式来解析和修改文件
最近我一直在使用的文本文件(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的应用程序运行它。
现在,这只是我的实验和评估我的应用程序。
我复制你输入一个文件,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
那么sed或awk呢?它们是否适合这种用例? – zengr
是的,但它看起来更复杂一点:http://stackoverflow.com/questions/1251999/sed-how-can-i-replace-a-newline-n –
除非你的Java代码做了一些愚蠢的事情,否则它将处于与其他任何事情相同的速度。
命令行工具没有任何魔力,它们会使它们比你的代码更快。
你需要这个数组被消耗什么?为什么命令行工具会更好?它仍然需要从磁盘读取文件,解析文件,并将数组存储在内存中,就像使用非命令行代码块一样。 –
,因为我经常做这些小测试,而不是真正的应用程序的一部分。但要对数据进行实验。 – zengr