本文介绍了非法参考AWK数组(我有麻烦搞清楚AWK)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用的脚本是:
cat gatk_probes.interval_list | awk ' BEGIN{ OFS="\t"; print "#CHR\tBP1\tBP2\tID" } { split($1,a,":"); chr=a[1]; if (match(chr,"chr")==0) { chr="chr"chr } split(a[2],b,"-"); bp1=b[1]; bp2=bp1; if (length(b) > 1) { bp2=b[2] } print chr,bp1,bp2,NR }' > ./EXOME.targets.reg我收到错误:
awk: line 1: illegal reference to array b有什么明显错误?
Is there something obviously wrong?
推荐答案长度(B)是搞乱你,显然不是AWK的每一个执行支持它。你可以这样做,但:
length(b) is messing you up, apparently not every implementation of awk supports it. You can do this though:
BEGIN { OFS="\t"; print "#CHR\tBP1\tBP2\tID" } { split($1,a,":"); chr=a[1]; if (match(chr,"chr")==0) { chr="chr"chr } blength = split(a[2],b,"-"); bp1=b[1]; bp2=bp1; if (blength > 1) { bp2=b[2] } print chr,bp1,bp2,NR }分裂返回数组中的元素(B在这种情况下)的数目。
split returns the number of elements in the array (b in this case).
更多推荐
非法参考AWK数组(我有麻烦搞清楚AWK)
发布评论