2

需要对这样的文件应用过滤器:

TUPAC_0006:1:1:2554:2356#0/1    0   *   0   0   *   *   0   0   AGAGTTTTAAAATTTCCTTCCATTTCAGTATATGCATACTCAGTTCATCACATAGTAATATCAATAAAAAAATAAA    aK\`Zb_`aaaffdf]ffcfffafddffdffa[ffffcefgfacgggcgedaf[cQ^^_^cc`acadccbgbgcbb    XM:i:0
TUPAC_0006:1:1:4363:2353#0/2    0   *   0   0   *   *   0   0   CNNCNCCATTNATCGGTTACTACTATACTCAATGGATCCAATACCGTTACCAACGGAACAAGTTACCCTAGGGATA    UBBUBT[JTZBHOUIHQGNSVPQYVedcWeHHVK]aee`ca\KaaaLaS\\QW\Qadd_ehhh[cXUIPSaZYW[c    XM:i:0
TUPAC_0006:1:1:3197:2355#0/1    0   *   0   0   *   *   0   0   AGGGCAGAGGACCAACATGGGCATTTTGTTTATGAGCAACGTGGGTCTCA  acY\a\^Sc^`Z^aYff_dYcc^L\]\WRY__dKdYaY\LSIQQO\[W^a  XM:i:0
TUPAC_0006:1:1:3142:2353#0/2    0   *   0   0   *   *   0   0   ACGTCATTTCCACATTCAAAATCCGCAAAGCAGCCAATCACATCGTTCTCTGCAAACTTGTCTCCGTAGTTTTCAA    fffffcffffggggggcgggggggdfgggggcfgggggggggggccRfffgdggafggfffgeffgdWbd]dbdag    XM:i:0
TUPAC_0006:1:1:2463:2357#0/1    16  chr1:20982270-20982592|ENST00000415136.2|100_100    115 255 76M *   0   0   GCTGGGCAGTGAGTGCGGGATTGAGTTTGACGAGGAGAAAACGGCTGTCATTGACCATCACAACTATGACATCTCA    XO^WacPV\[O]`c`_cac^PdadcW]fccacaa\^ZZ`_V_V_R_Wfacfffddfdf^ccafff_cddda^cccY    XA:i:0  MD:Z:76 NM:i:0
TUPAC_0006:1:1:2463:2357#0/2    16  chr1:20982031-20982172|ENST00000415136.2|100_100    17  255 76M *   0   0   GCTGGGCAGTGAGTGCGGGATTGAGTTTGACGAGGAGAAAACGGCTGTCATTGACCATCACAACTATGACATCTCA    XO^WacPV\[O]`c`_cac^PdadcW]fccacaa\^ZZ`_V_V_R_Wfacfffddfdf^ccafff_cddda^cccY    XA:i:0  MD:Z:76 NM:i:0
TUPAC_0006:1:1:2463:2357#0/1    16  chr1:20982273-20982595|ENST00000415136.2|100_100    118 255 76M *   0   0   GCTGGGCAGTGAGTGCGGGATTGAGTTTGACGAGGAGAAAACGGCTGTCATTGACCATCACAACTATGACATCTCA    XO^WacPV\[O]`c`_cac^PdadcW]fccacaa\^ZZ`_V_V_R_Wfacfffddfdf^ccafff_cddda^cccY    XA:i:0  MD:Z:76 NM:i:0

我只想保留在第二个字段上有 16 并且第一个字段以 /1 结尾的行。

期望的结果:

TUPAC_0006:1:1:2463:2357#0/1    16  chr1:20982270-20982592|ENST00000415136.2|100_100    115 255 76M *   0   0   GCTGGGCAGTGAGTGCGGGATTGAGTTTGACGAGGAGAAAACGGCTGTCATTGACCATCACAACTATGACATCTCA    XO^WacPV\[O]`c`_cac^PdadcW]fccacaa\^ZZ`_V_V_R_Wfacfffddfdf^ccafff_cddda^cccY    XA:i:0  MD:Z:76 NM:i:0
TUPAC_0006:1:1:2463:2357#0/1    16  chr1:20982273-20982595|ENST00000415136.2|100_100    118 255 76M *   0   0   GCTGGGCAGTGAGTGCGGGATTGAGTTTGACGAGGAGAAAACGGCTGTCATTGACCATCACAACTATGACATCTCA    XO^WacPV\[O]`c`_cac^PdadcW]fccacaa\^ZZ`_V_V_R_Wfacfffddfdf^ccafff_cddda^cccY    XA:i:0  MD:Z:76 NM:i:0

我试图用这个 awk 行来做到这一点:

 awk '{if ($1 ~ //1/ && $2 == 16) print $0}' file

但是字符“/”扰乱了 awk 语法。所以,我也试过:

 awk '{if ($1 ~ /"/1"/ && $2 == 16) print $0}' file

但它不起作用。

有人知道如何使用 awk 在字符串中查找 /1 吗?

等效解决方案仅按第一个字段的最后一个数字进行过滤。但我不知道如何使用 awk 来做到这一点。

谢谢你的时间!

4

1 回答 1

3

试试这个:

awk '$1~/\/1$/ && $2==16' file

用于\/1$匹配/1字段#1 的末尾。

于 2012-06-14T22:39:15.243 回答