列の特定の値に基づいて行を抽出する方法は?

列の特定の値に基づいて行を抽出する方法は?

次のようなbamファイルがあり(サブセットのみ)、chr(3番目の列の2)と開始位置(4番目の列の13107〜14348)に基づいて行を抽出しようとしています。

入力する:

D00823:135:HYNH5BCX2:2:2212:6147:34072  256 1   13039   1   51M *   0   0   GCACATTGCTAAGTGGAAGAAGACAGTCTGAGGAGGATACACACAGTGTGA DDDDDIIIHHIHIIIIIGIEHIIGHIIIGIIII?GHHGIIIIIIIIIIIII AS:i:0  ZS:i:0  XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:51 YT:Z:UU NH:i:10 RG:Z:I19-1116-18-56202EE2
D00510:603:HYNMJBCX2:1:2114:6725:52665  256 1   13039   1   51M *   0   0   GCACATTGCTAAGTGGAAGAAGACAGTCTGAGGAGGATACACACAGTGTGA DDDDDIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII AS:i:0  ZS:i:0  XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:51 YT:Z:UU NH:i:10 RG:Z:I19-1116-18-43662E24
D00510:603:HYNMJBCX2:2:1108:18476:88773 256 2   13107   1   51M *   0 0 CTGGAGAAGGCAAACTACACAGATGGGAAGCCATTGGCTCCATGGGGTGGG  
DDBBDHIIIIIHHGIIIIHHCHHIHCHHHHIIIIGIHHHIIIIIIHFHIHI AS:i:0  ZS:i:0  XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:51 YT:Z:UU NH:i:10 RG:Z:I19-1116-18-526BA999
D00823:135:HYNH5BCX2:1:1216:2815:76028  256 2   14348   1   49M *   0   0   TGTTATTGAAGTGAAGCAGAATTGTTTTTACTAATCTGCTTATTACCCA    
DDDDDHIHFHIIGHIHIIHIGIIIIIIIIIIHHHHIIIIIHHIIHHIII   AS:i:0  ZS:i:0  XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:49 YT:Z:UU NH:i:10 RG:Z:I19-1116-18
D00823:135:HYNH5BCX2:1:2107:4561:30492  256 2   14348   1   49M *   0   0   TGTTATTGAAGTGAAGCAGAATTGTTTTTACTAATCTGCTTATTACCCA   BDDDAHHHHHIHIIIIIIIIIIIIIIIIIIIIIHIIIHIIIHIIIIIII   AS:i:0  ZS:i:0  XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:49 YT:Z:UU NH:i:10 RG:Z:I19-1116-18
D00510:603:HYNMJBCX2:1:2205:16091:50653 256 2   14350   1   49M *   0   0   TGTTATTGAAGTGAAGCAGAATTGTTTTTACTAATCTGCTTATTACCCA   DDDDDIIIIIIIIHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHI   AS:i:0  ZS:i:0  XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:49 YT:Z:UU NH:i:10 RG:Z:I19-1116-18-43662E24

出力:

D00510:603:HYNMJBCX2:2:1108:18476:88773 256 2   13107   1   51M *   0   0   CTGGAGAAGGCAAACTACACAGATGGGAAGCCATTGGCTCCATGGGGTGGG  
DDBBDHIIIIIHHGIIIIHHCHHIHCHHHHIIIIGIHHHIIIIIIHFHIHI AS:i:0  ZS:i:0  XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:51 YT:Z:UU NH:i:10 RG:Z:I19-1116-18-526BA999
D00823:135:HYNH5BCX2:1:1216:2815:76028  256 2   14348   1   49M *   0   0   TGTTATTGAAGTGAAGCAGAATTGTTTTTACTAATCTGCTTATTACCCA    
DDDDDHIHFHIIGHIHIIHIGIIIIIIIIIIHHHHIIIIIHHIIHHIII   AS:i:0  ZS:i:0  XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:49 YT:Z:UU NH:i:10 RG:Z:I19-1116-18
D00823:135:HYNH5BCX2:1:2107:4561:30492  256 2   14348   1   49M *   0   0   TGTTATTGAAGTGAAGCAGAATTGTTTTTACTAATCTGCTTATTACCCA   BDDDAHHHHHIHIIIIIIIIIIIIIIIIIIIIIHIIIHIIIHIIIIIII   AS:i:0  ZS:i:0  XN:i:0  XM:i:0  XO:i:0  XG:i:0  NM:i:0  MD:Z:49 YT:Z:UU NH:i:10 RG:Z:I19-1116-18

答え1

私の解決策:

awk '$3 == 2 && $4 >= 13107 && $4 <= 14348' input.txt

答え2

使用awkとif条件:

awk '{ if ($3=2 && $4<14349 && $4>13106) print $0 }' input

関連情報