《Bioinformatics-Data-Skills》之cut & column
对于表格型文本数据(tsv,csv等),这里介绍两个命令,分别是提取特定列的命令cut
与命令行中的可视化命令column
。
cut
cut
用于提取有固定分隔的列,例如我们提取bed文件的第一列(染色体位置):
$ cut -f1 Mus_musculus.GRCm38.75_chr1.bed | head -n3
1
1
1
提取多列采用-f1-8
(提取第1到第8列)或者-f1,5,8
(提取第1,5,8列)。注意提取多列无法排序操作,例如-f8,5,3
的效果和-f3,5,8
的结果是一致的。
$ grep -v "^#" Mus_musculus.GRCm38.75_chr1.gtf | cut -f1-8 | head -n3
1 pseudogene gene 3054233 3054733 . + .
1 unprocessed_pseudogene transcript 3054233 3054733 . + .
1 unprocessed_pseudogene exon 3054233 3054733 . + .
默认的分隔符是\t
,可以使用-d
指定其它的分隔符,例如使用-d,
提取csv文件的列:
$ cut -d, -f2-3 Mus_musculus.GRCm38.75_chr1_bed.csv | head -n3
3054233,3054733
3054233,3054733
3054233,3054733
column
查看tsv文件的时候,各列的排列很不整齐:
$ grep -v "^#" Mus_musculus.GRCm38.75_chr1.gtf | cut -f1-8 | head -n3
1 pseudogene gene 3054233 3054733 . + .
1 unprocessed_pseudogene transcript 3054233 3054733 . + .
1 unprocessed_pseudogene exon 3054233 3054733 . + .
我们可以通过column
命令来美化:
$ grep -v "^#" Mus_musculus.GRCm38.75_chr1.gtf | cut -f1-8 | head -n3 | column -t
1 pseudogene gene 3054233 3054733 . + .
1 unprocessed_pseudogene transcript 3054233 3054733 . + .
1 unprocessed_pseudogene exon 3054233 3054733 . + .
column
命令默认的分隔符也是\t
,其它分隔符采用-s
参数指定,例如展示csv
文件:
$ column -s, -t Mus_musculus.GRCm38.75_chr1_bed.csv | head -n3
1 3054233 3054733
1 3054233 3054733
1 3054233 3054733
注意,column
只用于命令行进行数据可视化,不要将这种可视化存入文本数据中。一个重要的原则是:给代码给人看,写数据给电脑看。虽然通过添加任意的空格提高了数据的可读,但是不利于程序处理,可以在需要查看数据的时候调用column
进行展示。