[英]Extract all columns which match a string awk sed python perl
我有看起来像这样的数据
SNP NA18524 NA18526 NA18529 NA18537
Status Low Low High High
Pop ASN ASN CEU YRI
ENSG00000187634 6.425880 6.348570 6.464480 6.391740
我只想匹配并打印那些我在其中找到字符串ASN的列
稍后我将要匹配并仅打印CEU,然后仅打印YRI
我想要类似的东西吗
sed 'p/[ASN]//g'
因此,输出如下所示:
SNP NA18524 NA18526
Status Low Low
Pop ASN ASN
ENSG00000187634 6.425880 6.348570
?
数据由制表符分隔。
在Python中执行此操作可能是您在标题中提到的几种语言中花费最少的精力。 它应该很简单:只需读取各行( for line in open('myfile.tsv'):
),标记化( fields = line.split('\\t')
),在您的搜索字符串上进行匹配,跟踪哪些列您“喜欢”,然后再次进行整个操作,打印您现在知道需要的字段。
如果您对实现感到困惑,则可能需要将其发布为一个单独的,更具体的问题。
零优雅 ...但应该可以
awk -F'\t' ' {
if (found!=1) {
for(i=0;i<=NF;++i) {
if ($i=="ASN") {
# save which columns contains it
idx[i] = 1;
found=1;
}
}
# at least one column found?
if (found==1) {
# this 3 instructions will rewind the file
ARGC++;
ARGV[ARGIND+1] = FILENAME;
nextfile;
}
}
else {
# printout the rows matching
for (a in idx)
printf("%s ",$a);
printf("\n");
}
} ' yourfile
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.