使用cut -d在awk if条件中提取整行

时间:2013-07-22 13:48:17

标签: bash unix awk

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

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

我现在想要在:seperator上拆分此文件并检索第二个值。 这可以使用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): 没有输出

2 个答案:

答案 0 :(得分:4)

这应该有用(虽然未经测试,请提供输入和预期输出):

awk '{split($11,ary,/:/); if(ary[2]>=5) print}' myFile

答案 1 :(得分:0)

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

awk -F ':|[[:blank:]]+' '$23 > 5' filename