本文介绍了使用数组使用awk的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的值的数组,我想寻找用awk输出到文件的值。在AWK行,如果我替换第一个$ I通过数字本身,剧本的作品,但是当我尝试使用变量 $ I脚本不再工作。

 宣布-a ARR =(5073770,7577539)
因为我在$ {ARR [@]}

    回声$ I    awk的-F'[; \\ T]''$ 2〜$ I{子(/ DP = /,,$ 15);打印$ 15}'$ INPUT>> $ I
DONE

我期待在该文件中包含许多行类似如下:

  chr12 3356475。 C A 76.508。 AB=0;ABP=0;AC=2;AF=1;AN=2;AO=3;CIGAR=1X;DP=3;DPB=3;DPRA=0;EPP=9.52472;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=0;NS=1;NUMALT=1;ODDS=8.76405;PAIRED=0;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=111;QR=0;RO=0;RPP=9.52472;RPPR=0;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=0;SRP=0;SRR=0;TYPE=snp GT:DP:RO:QR:AO:质量检查:GL 1/1:3:0:0:3:111:-10,-0.90309,0


解决方案

传递值 $ I 来用awk -v

 的awk -F'[; \\ T]'-v VAR =$ I'$ 2〜{VAR子(/ DP = /,,$ 15);打印$ 15}'$ INPUT>> $ I

I am using an array of values, and I want to look for those values using awk and output to file. In the awk line if I replace the first "$i" with the numbers themselves, the script works, but when I try to use the variable "$i" the script no longer works.

declare -a arr=("5073770" "7577539")
for i in "${arr[@]}"
do
    echo "$i"

    awk -F'[;\t]' '$2 ~ "$i"{sub(/DP=/,"",$15); print $15}' $INPUT >> "$i"
done

The file I'm looking at contains many lines like the following:

chr12   3356475 .   C   A   76.508  .   AB=0;ABP=0;AC=2;AF=1;AN=2;AO=3;CIGAR=1X;DP=3;DPB=3;DPRA=0;EPP=9.52472;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=0;NS=1;NUMALT=1;ODDS=8.76405;PAIRED=0;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=111;QR=0;RO=0;RPP=9.52472;RPPR=0;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=0;SRP=0;SRR=0;TYPE=snp GT:DP:RO:QR:AO:QA:GL    1/1:3:0:0:3:111:-10,-0.90309,0
解决方案

Pass the value $i to awk using -v:

awk -F'[;\t]' -v var="$i" '$2 ~ var{sub(/DP=/,"",$15); print $15}' $INPUT >> "$i"

这篇关于使用数组使用awk的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-15 20:33