열의 특정 값을 기반으로 행을 추출하는 방법은 무엇입니까?

열의 특정 값을 기반으로 행을 추출하는 방법은 무엇입니까?

다음과 같은 bam 파일이 있고(하위 집합일 뿐임) chr(세 번째 열의 2)과 시작 위치(네 번째 열의 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

관련 정보