我想输出一个很大的CSV文件的行。在过去,我尝试了不同的东西,最终发现Linux的命令行界面(sed,awk,grep等)是处理这些类型文件的最快方式。使用Linux根据最小/最大值筛选非常大的数字排序的CSV文件?
我有一个CSV文件是这样的:
1,rand1,rand2
4,randx,randy,
6,randz,randq,
...
1001,randy,randi,
1030,rando,randn,
1030,randz,randc,
1036,randp,randu
...
1230994,randm,randn,
1230995,randz,randl,
1231869,rande,randf
虽然第一列数值的增加,每个数字之间的空间随机变化。我需要能够输出在第一列中具有X和Y之间的值的所有行。
喜欢的东西:
sed ./csv -min --col1 1000 -max --col1 1400
这将输出所有具有在1000和1400
的路线之间的第一列值的线是足够不同的是,在A> 5 GB的文件有可能只要重复5次,所以如果只计算一次重复次数就不会有什么大不了的 - 但如果由于重复行而引发错误,这将是一件大事。
我可能不知道是否存在特定的线条值(例如1000是粗略估计值,不应该假定为第一列值)。
+0
我喜欢@Benjamin W.回答。 OP,我们可以利用“0”吗? 'sed'^ 1 [[:num:]] {3},/,/^14 [[:num:]] {3}/p''即使现有的1000和1400实际上没有发生, 1000到1999之间的任何数字以及1400到1499之间的任何数字结束就足够了。这当然需要一些正则表达式知识来调用脚本... –