我尝试使用的脚本是:
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
有什么明显的错误吗?
答案 0 :(得分:3)
length(b)
搞砸了你,显然不是每个awk的实现都支持它。你可以这样做:
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
}
split返回数组中的元素数(在本例中为b)。