-1

我有看起来像这样的数据

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

?

数据以制表符分隔。

4

2 回答 2

1

在您在标题中提到的几种语言中,在 Python 中执行此操作可能是最不让人费解的。它应该很简单:只需读取行 ( for line in open('myfile.tsv'):)、标记化 ( fields = line.split('\t'))、匹配您的搜索字符串、跟踪您“喜欢”哪些列,然后再次执行整个操作,打印您现在知道需要的字段。

如果您在实施过程中遇到困难,您可能希望将其作为一个单独的、更具体的问题发布。

于 2013-01-15T12:49:53.980 回答
1

零优雅......但它应该工作

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
于 2013-01-15T13:13:54.723 回答