我有非常大的基因型文件,基本上不可能在R中打开,所以我试图使用linux命令行提取感兴趣的行和列。使用头部/尾部的行很简单,但我很难弄清楚如何处理柱子。
如果我尝试使用
提取(比方说)100-105个制表符或空格分隔的列 cut -c100-105 myfile >outfile
如果每列中有多个字符串,这显然不起作用。有没有办法用适当的参数修改cut,以便它提取列中的整个字符串,其中列被定义为空格或制表符(或任何其他字符)分隔?
答案 0 :(得分:29)
如果命令应该同时使用制表符和空格作为分隔符,我会使用awk
:
awk '{print $100,$101,$102,$103,$104,$105}' myfile > outfile
只要你只需要指定5个字段就可以输入它们,对于更长的范围你可以使用for
循环:
awk '{for(i=100;i<=105;i++)print $i}' myfile > outfile
您需要-f
:
cut -f100-105 myfile > outfile
如果字段分隔符与TAB
不同,则需要使用-d
指定字段分隔符:
cut -d' ' -f100-105 myfile > outfile
检查the man page以获取有关cut命令的更多信息。
答案 1 :(得分:11)
你可以使用带有这样的分隔符的剪切:
with space delim:
cut -d " " -f1-100,1000-1005 infile.csv > outfile.csv
with tab delim:
cut -d$'\t' -f1-100,1000-1005 infile.csv > outfile.csv
我给你剪切版本,你可以在其中提取间隔列表......
希望它有所帮助!