繁体   English   中英

提取与字符串awk sed python perl匹配的所有列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM