У меня есть некоторый код ниже:попытка использовать массив `A 'в скалярном контексте awk-ошибка?
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
Очень новый для кодирования в целом, так что я не уверен, что означает эта ошибка и почему я получили его. Не уверен, набрал ли я это достаточно ясно, но, надеюсь, у меня есть. Заранее спасибо!!! Эми
Можете ли вы объяснить, как вы выбираете строки для 'ADupes.txt',' BDupes.txt' и 'mixdupes.txt'? – konsolebox
Я добавил некоторую информацию, надеюсь, что вы ее поймете. Спасибо – AmyC
В вашем BDupes.txt, почему вы включили «Elaine | B6 | P»? Когда в ADupes.txt вы не включили родителя. – konsolebox