28.《Bioinformatics-Data-Skills》之Unix cut & column命令

《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进行展示。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容