2

我想在制表符分隔的文件中获取第 11 列的值。此返回值是使用 : 作为分隔符连接的多个值。

example result from cat myFile | cut -d':'    :
.:7:.:2:100:.

我现在想在 : 分隔符上拆分此文件并检索第二个值。这可以通过cut -d':' -f2

我的问题:如何创建一个语句,返回文件中第 11 列第二部分中值为 5 或更多的所有行?

输入文件(2行):

chr1    4396745 bnd_549 a   a[chr9:136249370[   100 PASS    SVTYPE=BND;MATEID=bnd_550;EVENT=transl_inter_1022;GENE=;    GT:AD:DP:SS:SSC:BQ  .:.:.:.:.:. .:7:.:2:100:.
chr1    6315381 bnd_551 c   ]chr9:68720182]c    100 PASS    SVTYPE=BND;MATEID=bnd_552;EVENT=transl_inter_9346;GENE=;    GT:AD:DP:SS:SSC:BQ  .:.:.:.:.:. .:3:.:2:100:.

预期输出:

chr1    4396745 bnd_549 a   a[chr9:136249370[   100 PASS    SVTYPE=BND;MATEID=bnd_550;EVENT=transl_inter_1022;GENE=;    GT:AD:DP:SS:SSC:BQ  .:.:.:.:.:. .:7:.:2:100:.

使用 (awk -F: '$11>=5' example.sorted.vcf) 输出:无输出

4

2 回答 2

4

这应该有效(尽管未经测试,请提供输入和预期输出):

awk '{split($11,ary,/:/); if(ary[2]>=5) print}' myFile
于 2013-07-22T13:52:36.493 回答
0

您还可以使用空格或冒号作为字段分隔符:

awk -F ':|[[:blank:]]+' '$23 > 5' filename
于 2013-07-22T15:13:52.663 回答