-1
У меня есть файл ввода p.txt
, который я хочу рассчитать и классифицировать, я, похоже, не получаю желаемый результат.Подсчитайте и классифицируйте с помощью awk
входного файла:
A1 G1 C1 F1
A2 G1 C1 F1
A3 G1 C1 F2
A4 G1 C2 F2
A7 G1 C2 F2
A8 G1 C2 F3
A11 G1 C2 F3
A23 G1 C2 F3
B4 G1 C2 F3
AC4 G2 C3 F4
B6 G2 C4 F4
BB5 G2 C4 F4
A25 G2 C5 F4
B13 G2 C5 F5
D12 G2 C5 F5
D2 G2 C5 F5
B89 G2 C5 F6
B44 G2 C5 F6
Желаемый результат:
G1(9)
F1(2)
C1=A1,A2
F2(3)
C1=A3
C2=A4,A7
F3(4)
C2=A8,A11,A23,B4
G2(9)
F4(4)
C3=AC4
C4=B6,BB5
C5=A25
F5(3)
C5=B13,D12,D2
F6(2)
C5=B89,B44
Я попытался это:
awk '{
D[$2]++
A[$4]++
B[$4 FS $3] = B[$4 FS $3] ? B[$4 FS $3] "," $1 : $1
if(!tmp[$4 FS $3]++)order[++c]=$4 FS $3
}
function orderp(subs,mains){
for(j in B){
if(j==subs){
split(j,X)
if(X[1]==mains)
print X[2]"="B[j]
}
}
}
END{
for(i in D){
print i"("D[i]")"
for(i in A){
print i"("A[i]") "
for(m=1;m<=c;m++){ orderp(order[m],i) }
print ""
}
}
}
' p.txt
Я не получаю желаемый результат Это белый в я получаю:
G1(9)
F1(2)
C1=A1,A2
F2(3)
C1=A3
C2=A4,A7
F3(4)
C2=A8,A11,A23,B4
F4(4)
C3=AC4
C4=B6,BB5
C5=A25
F5(3)
C5=B13,D12,D2
F6(2)
C5=B89,B44
G2(9)
F1(2)
C1=A1,A2
F2(3)
C1=A3
C2=A4,A7
F3(4)
C2=A8,A11,A23,B4
F4(4)
C3=AC4
C4=B6,BB5
C5=A25
F5(3)
C5=B13,D12,D2
F6(2)
C5=B89,B44
'A1 G1 C1 F1' ' A2 G1 C1 F1' 'A3 G1 C1 F2' ' A4 G1 C2 F2' 'A7 G1 C2 F2' ' A8 G1 С2 F3' 'А11 G1 С2 F3' ' А23 G1 С2 F3' 'B4 G1 С2 F3' ' АС4 G2 С3 F4' 'В6 G2 С4 F4' ' BB5 G2 С4 F4' 'А25 G2 C5 F4' 'B13 G2 C5 F5' ' D12 G2 C5 F5' 'D2 G2 C5 F5' ' B89 G2 C5 F6' 'B44 G2 C5 F6' – user3437245
Это относительно сложно для« почему моя программа не работает? » type вопрос. Я подозреваю, что вы найдете больше людей, желающих помочь, если вы более конкретно продемонстрируете, что не удается в выходе, который вы получаете сейчас, как вы пытались отладить его и где вы застряли. – jas
Итак, ваш фактический результат довольно близкий, только вы не ограничиваете значения «F», которые не соответствуют текущему значению «G». Я имею в виду, что если вы только напечатали F1, F2 и F3 после G1 и только F4, F5 и F6 после G2, это было бы идеально. Это где вы застряли? Есть ли где-то в коде, который вы уже пытаетесь сделать? – jas