sidoline: AWK Programm verstehen

Beitrag lesen

Hallo,

ich habe leider nur begrenzt ahnung von awk. Ich brauche für meine Diplomarbeit ein awk-skript. Ich selber programmiere in Java und habe das awk programm so wie ich es verstanden habe umgeschrieben. Allerdings kommen bei meinem Programm andere Werte raus als bei dem Awk skript. Ich hab das Programm so verstanden, dass es die Werte am Anfang in das jeweilige Array speichert, den Eingabestring liest und jedem Letter den entsprechenden Wert aus dem Array zuweist und das über den Eingabestring aufsummiert. Also letzenendlich: Eingabestring: ABC --> Ergebnis= (Wert für Array A an Stelle 1)+(Wert für Array B an Stelle 2)+(Wert für Array C an Stelle 3).

Gibt es in awk irgendwelche seltsamen aufrundefunktionen oder steckt noch mehr in dem skript?

Hier ist das skript:

  
BEGIN {  
A = " -0.02 -0.05 -0.07 -0.11 0.79 0.79 0.79 0.79 0.79 0.69 0.46 0.30 0.15"  
C = " 1.61 3.21 4.87 7.30 6.35 6.35 6.35 6.35 6.35 0.37 0.25 0.16 0.08"  
D = " 0.14 0.29 0.44 0.65 4.91 4.91 4.91 4.91 4.91 0.53 0.35 0.23 0.12"  
E = " 0.49 0.98 1.48 2.22 5.14 5.14 5.14 5.14 5.14 2.47 1.65 1.09 0.54"  
F = " 0.05 0.09 0.14 0.21 -1.17 -1.17 -1.17 -1.17 -1.17 0.79 0.53 0.35 0.17"  
G = " -0.11 -0.22 -0.33 -0.50 1.95 1.95 1.95 1.95 1.95 0.05 0.03 0.02 0.01"  
H = " -0.08 -0.16 -0.24 -0.37 1.74 1.74 1.74 1.74 1.74 0.13 0.09 0.06 0.03"  
I = " 0.34 0.69 1.04 1.56 -2.05 -2.05 -2.05 -2.05 -2.05 0.17 0.11 0.08 0.04"  
K = " -0.28 -0.56 -0.85 -1.28 0.40 0.40 0.40 0.40 0.40 -1.62 -1.08 -0.71 -0.36"  
L = " 0.56 1.12 1.70 2.54 -3.62 -3.62 -3.62 -3.62 -3.62 -0.03 -0.02 -0.01 -0.01"  
M = " 0.03 0.05 0.08 0.12 1.10 1.10 1.10 1.10 1.10 0.26 0.17 0.11 0.06"  
N = " 0.25 0.49 0.74 1.12 2.36 2.36 2.36 2.36 2.36 -0.44 -0.29 -0.19 -0.10"  
P = " 0.05 0.10 0.15 0.22 1.63 1.63 1.63 1.63 1.63 -0.42 -0.28 -0.18 -0.09"  
Q = " -0.37 -0.74 -1.13 -1.69 1.60 1.60 1.60 1.60 1.60 -0.22 -0.15 -0.10 -0.05"  
R = " -0.39 -0.78 -1.19 -1.78 -0.79 -0.79 -0.79 -0.79 -0.79 -2.58 -1.72 -1.14 -0.57"  
S = " -0.04 -0.09 -0.13 -0.20 1.27 1.27 1.27 1.27 1.27 -0.34 -0.23 -0.15 -0.07"  
T = " -0.30 -0.60 -0.91 -1.36 0.27 0.27 0.27 0.27 0.27 -0.73 -0.48 -0.32 -0.16"  
V = " -0.08 -0.17 -0.26 -0.39 -1.75 -1.75 -1.75 -1.75 -1.75 1.05 0.70 0.46 0.23"  
W = " -0.14 -0.29 -0.43 -0.65 3.49 3.49 3.49 3.49 3.49 0.17 0.12 0.08 0.04"  
Y = " 0.06 0.13 0.19 0.29 -1.88 -1.88 -1.88 -1.88 -1.88 1.73 1.15 0.76 0.38"  
X = " 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00"  
  
}  
{  
split(A,AA);  
split(C,CC);  
split(D,DD);  
split(E,EE);  
split(F,FF);  
split(G,GG);  
split(H,HH);  
split(I,II);  
split(K,KK);  
split(L,LL);  
split(M,MM);  
split(N,NN);  
split(P,PP);  
split(Q,QQ);  
split(R,RR);  
split(S,SS);  
split(T,TT);  
split(V,VV);  
split(W,WW);  
split(Y,YY);  
split(X,XX);  
  
{      for (j=1; j<= 1; j++)   {  
 for (i=0;i<= 12; i++) {  
  
if (substr($3,i+j,1) == "A") {sum += AA[i+1]; continue}  
if (substr($3,i+j,1) == "C") {sum += CC[i+1]; continue}  
if (substr($3,i+j,1) == "D") {sum += DD[i+1]; continue}  
if (substr($3,i+j,1) == "E") {sum += EE[i+1]; continue}  
if (substr($3,i+j,1) == "F") {sum += FF[i+1]; continue}  
if (substr($3,i+j,1) == "G") {sum += GG[i+1]; continue}  
if (substr($3,i+j,1) == "H") {sum += HH[i+1]; continue}  
if (substr($3,i+j,1) == "I") {sum += II[i+1]; continue}  
if (substr($3,i+j,1) == "K") {sum += KK[i+1]; continue}  
if (substr($3,i+j,1) == "L") {sum += LL[i+1]; continue}  
if (substr($3,i+j,1) == "M") {sum += MM[i+1]; continue}  
if (substr($3,i+j,1) == "N") {sum += NN[i+1]; continue}  
if (substr($3,i+j,1) == "P") {sum += PP[i+1]; continue}  
if (substr($3,i+j,1) == "Q") {sum += QQ[i+1]; continue}  
if (substr($3,i+j,1) == "R") {sum += RR[i+1]; continue}  
if (substr($3,i+j,1) == "S") {sum += SS[i+1]; continue}  
if (substr($3,i+j,1) == "T") {sum += TT[i+1]; continue}  
if (substr($3,i+j,1) == "V") {sum += VV[i+1]; continue}  
if (substr($3,i+j,1) == "W") {sum += WW[i+1]; continue}  
if (substr($3,i+j,1) == "Y") {sum += YY[i+1]; continue}  
if (substr($3,i+j,1) == "X") {sum += XX[i+1]; continue}  
  
      }  
  print  sum ,";;;";  
  sum=0;}  
print $0 }}  
  

Viele Grüße