![如何根据列中的某些值提取行?](https://linux22.com/image/154145/%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%E5%88%97%E4%B8%AD%E7%9A%84%E6%9F%90%E4%BA%9B%E5%80%BC%E6%8F%90%E5%8F%96%E8%A1%8C%EF%BC%9F.png)
我有一个如下的 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