使用 less 查看逗号对齐的数据

使用 less 查看逗号对齐的数据

我有一个大的CSV 文件。

我想使用less类似的命令查看我的文件,它不必立即读取整个文件来向我显示其中的一部分。

是否有一个命令可以在逗号对齐的列中显示我的文件?

答案1

我不确定这对您来说是否足够,但您可以利用程序并使用和/或这样column读取文件的选定部分:headtail

 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 处理库。

相关内容