TSV 文件是以制表符 \t 分隔字段的文本文件,常用于存储表格数据。在生信场景下,我们碰到的大多数文件格式本质上都是以 制表符 \t 分隔,包括但不限于 VCF, BED, SAM, GFF等等。

但是在 shell 界面中,使用 less 查看这些文件,经常看到前后行的每一列并不是严格对齐的,就像下面这样,不同列会错位,翻看起来很难受。

当用 less -S hs37d5.fa.fai 查看 GRCh37 基因组索引文件时:

Untitled

这里我们用到column 和 less 组合定义一个命令行工具,可方便的对齐查看 tsv 格式的文件。column 是一个用于对文本数据进行列处理和格式化的命令行工具。它可以将输入的文本数据按列对齐,并可以根据指定的选项进行列的格式化和调整。

将下列代码复制到 ~/.bashrc 中在 source ~/.bashrc 以后,就可以使用啦!

# lec:Formatted display
lec () {
    column -t -s$'\\t' "$@" | less -S
}

lec 命令的使用非常简单。跟 less 的使用方法一样。只需在终端中运行 lec <文件名>,其中 <文件名> 是您要对齐显示的 TSV 文件的路径。lec 命令将读取文件中的数据,并将每列字段对齐,使其在终端中以整齐的列形式显示。

当用 lec hs37d5.fa.fai 查看 GRCh37 基因组索引文件时:

Untitled

可以看到,用 less 打开时错位显示的列,现在已经完全对齐啦。

请注意两点,

  1. lec 仅适用于 \t 分隔的文件,对于其他类型的文件可能无法正常工作。
  2. lec 查看文件的时候需要读取全部行以后才能对齐显示,所以查看大文件的话会比较慢。