我的数据看起来像这样
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
数据以制表符分隔。
答案 0 :(得分:1)
在Python中执行此操作可能是您在标题中提到的几种语言中最不用说的。它应该是直截了当的:只需读取行(for line in open('myfile.tsv'):
),标记化(fields = line.split('\t')
),匹配搜索字符串,跟踪“喜欢”哪些列,然后再次完成整个事情,打印您现在知道的所需字段。
如果您对实施感到困惑,您可能希望将其作为单独的,更具体的问题发布。
答案 1 :(得分:1)
ZERO ELEGANCE ......但它应该有效
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