我有一个大的CSV 文件。
我想使用less
类似的命令查看我的文件,它不必立即读取整个文件来向我显示其中的一部分。
是否有一个命令可以在逗号对齐的列中显示我的文件?
答案1
我不确定这对您来说是否足够,但您可以利用程序并使用和/或这样column
读取文件的选定部分:head
tail
head -n 300 myfile.csv | tail -n 100 | column -ts ',' | less
head -n-300 myfile.csv | head -n 100 | column -ts ',' | less
您可以将其包装在某个脚本中以一次查看文件的不同部分(可能没有less
那么)。除此之外,恐怕仅使用 GNU 工具来完成这项工作会有问题。
答案2
使用less
但是当您想要查看列对齐的 CSV 数据时,请通过以下命令管道传输当前页面column -ts ,
:
| <m> shell 命令 <m>代表任意标记字母。通过管道传输输入的一部分 文件到给定的 shell 命令。文件的部分 管道是在当前屏幕上的第一行和 字母标记的位置。也可以是 ^ 或 $ 来表示 分别定位文件的开头或结尾。如果是 。或新的- 行,当前屏幕已通过管道传输。 m 后面跟任意小写字母,标记当前位置 和那封信一起。
所以用|.column -ts ,
在less
答案3
我有过很好的经验tabview
,尽管它并不总是能很好地处理大文件。不过,结合起来head
还是相当不错的。
答案4
这并不是一个真正的问题,但无论如何,我建议使用less
与查看 csv 文件不同的东西。这确实不是正确的工具。尝试类似的方法R
,它对查看 CSV 文件以及在必要时处理 CSV 文件提供了良好的支持。例如,要读取 csv 文件的 5 行,请执行以下操作
$ R
> read.csv("pheno.csv",nrows=5)
faid expid pid mid sex pheno
1 1420 NA12003 0 0 1 0
2 1420 NA12004 0 0 2 0
3 1420 NA10838 9 10 1 0
4 1420 NA12005 0 0 1 0
5 1420 NA12006 0 0 2 0
看
> help(read.csv)
求助。也可以看看
> help(write.csv)
用于写入文件等
编辑:我碰巧有一个 1.1G 的 csv 文件,长度为 934991 行。
$ time Rscript -e 'read.csv("GenomeWideSNP_6.na29.annot.csv", skip=500000, nrows=5, header=FALSE)'
这会跳过 500,000 行并读取 5 行。 R 需要 1 分钟才能返回此值,并且最高使用量为 620M(!) 看起来它可能正在将跳过的行读入内存,尽管这没有任何意义。
结果:我并不是真正的 R 粉丝,但对于处理中小型数据集,特别是如果您想对其进行统计分析,您可能会比 R 做得更差。替代方案是 Python 和一些 csv 处理库。