一尘不染

在Linux中使用不同的分隔符从文本文件中提取列

linux

我有非常大的基因型文件,这些文件基本上不可能在R中打开,因此我试图使用linux命令行提取感兴趣的行和列。使用头/尾行足够简单,但是我很难弄清楚如何处理列。

如果我尝试使用以下方法提取(例如)第100-105个制表符或空格分隔列

 cut -c100-105 myfile >outfile

如果每列中包含多个字符的字符串,则这显然不起作用。有什么方法可以使用适当的参数修改cut,以便提取列内的整个字符串,其中列定义为空格或制表符(或任何其他字符)分隔吗?


阅读 709

收藏
2020-06-03

共1个答案

一尘不染

如果命令应同时使用制表符和空格作为分隔符,则应使用awk

awk '{print $100,$101,$102,$103,$104,$105}' myfile > outfile

只要您只需要指定5个字段,就可以直接键入它们,对于更长的范围,您可以使用for循环:

awk '{for(i=100;i<=105;i++)print $i}' myfile > outfile

如果要使用cut,则需要使用以下-f选项:

cut -f100-105 myfile > outfile

如果字段分隔符与TAB您不同,则需要使用来指定-d

cut -d' ' -f100-105 myfile > outfile

检查手册页以获取关于cut命令的更多信息。

2020-06-03