0

私は以下のいくつかのコードを持っています:

BEGIN{

FS= "|"
countA=CountB=0;

}

{

id=substr($2,1,1);
++file[id]




if ($3 == "P")
    {
   if(countB==0){
    for(dupes in B)
    print B[dupes] > "Bdupes.txt"
    }
}

else if(countA==0){
   for(dupes in A){
    print A[dupes] > "Adupes.txt"
    }
}

else if(countA==countB){
   i=1
    while(i<countA){

     printA[i] > "mixdupes.txt"
     printB[i] > "mixdupes.txt"

     }
}

if(A<B && A!=0){

   i=1
    while(i<(A+1)){
     printA[i] > "mixdupes.txt"
     printB[i] > "mixdupes.txt"
     }

   i=A+1
    while(i<(B+1)){
     print B[i]> "Bdupes.txt"


  if(id=="A"){
    A[1]=$0
    countA=1;
    countB=0;

    }

  else if (id=="B"){
    B[1]=$0
    countA=0;
    countB=1;
    }
  }
elseif ($3 == "C")
{

   if(id=="A"){
    countA++;
    A[countA]=$0
    }

else if(id=="B"){
   countB++;
    B[countB]=$0
    }

}
}
}
END{

for (file_id in file)
print file_id ":", file[file_id]

}

しかし、私はエラーが発生しています:

   awk: testking123.awk:81: (FILENAME=sample.txt FNR=1) fatal: attempt to use array `A' in a scalar context

私の入力はこれです:

Name|ID (file A or File B)|DDStatus(Parent or Child)|ParentID
Jon|A4|U|
Bob|B5|U|
Amy|A1|P|
Amy|A2|C|A1
Amy|B1|C|A1
Gareth|A3|P|
Gareth|B2|C|A3
Gareth|B3|C|A3
Phil|A5|P|
Phil|B4|C|A5
Elaine|B6|P|
Elaine|B7|C|B6

& 予想出力は次のようになります。

ADupes.txt (両方がファイル A の場合は親と複製 (子)、AAB の場合は単に複製)

Amy|A2|C|A1

BDupes.txt (両方がファイル B の場合は親と複製 (子)、ABB の場合は単に複製)

Gareth|B3|C|A3
Elaine|B6|P|
Elaine|B7|C|B6

mixdupes.txt (ファイル A + B の親と子 (子))

Amy|A1|P|
Amy|B1|C|A1
Gareth|A3|P|
Gareth|B2|C|A3
Phil|A5|P|
Phil|B4|C|A5

コーディング全般に非常に慣れていないため、このエラーが何を意味し、なぜエラーになったのかわかりません。これを十分に明確に入力したかどうかはわかりませんが、できればうまくいきます。前もって感謝します!!!エイミー

4

1 に答える 1