H
h.nietnagel
Grünschnabel
Hallo,
ich verzweifle an einem für mich schon sehr fortgeschrittenen Programm. Ich hab komplexe Textdateien (log Dateien), den ich bestimmte Information entnehmen will.
Ich poste der Einfachheit halber mal einen Ausschnitt:
Das Beispiel enthält alle Kombinationen, die ich in einem .awk file abfrage. Aber irgendwie stimmt was mit den if und else Anweisungen nicht.
Der Output soll so aussehen:
Ich hab es mit der Schreibweise im Skript oben geschafft, wenigstens alle "Pictures" im Output zu haben, aber die anderen Bedingungen werden ignoriert. Hat jemand Ideen zur Problemlösung?
Vielen Dank im Voraus!
Schöne Grüße,
Hannes
ich verzweifle an einem für mich schon sehr fortgeschrittenen Programm. Ich hab komplexe Textdateien (log Dateien), den ich bestimmte Information entnehmen will.
Ich poste der Einfachheit halber mal einen Ausschnitt:
Code:
XXX 2 Picture a_mask 613612 160696 204
XXX 2 Response 1 628734 175777 2
XXX 2 Port Input 12 628734 175777 2
XXX 2 Picture b_norm 633758 180801 2
XXX 2 Response 2 643824 190867 3
XXX 2 Port Input 15 643824 190867 3
XXX 2 Response 3 648905 195948 2
XXX 2 Port Input 16 648905 195948 2
XXX 2 Response 1 616735 197778 1
XXX 2 Port Input 12 616735 197778 1
XXX 2 Picture c_mask 612829 200872 1
XXX 2 Response 1 666174 213217 2
XXX 2 Port Input 12 666174 213217 2
XXX 2 Response 2 672729 219772 9
XXX 2 Port Input 15 672729 219772 9
XXX 2 Picture d_mask 673899 220942 2
XXX 2 Response 2 687105 234148 2
XXX 2 Port Input 15 687105 234148 2
XXX 2 Picture e_norm 693970 241013 1
XXX 2 Response 2 694735 241778 1
XXX 2 Port Input 15 694735 241778 1
XXX 2 Response 1 708575 255618 2
XXX 2 Port Input 12 708575 255618 2
XXX 2 Picture f_mask 714040 261083 2
XXX 2 Response 1 716726 263769 17
XXX 2 Port Input 53 716726 263769 17
Das Beispiel enthält alle Kombinationen, die ich in einem .awk file abfrage. Aber irgendwie stimmt was mit den if und else Anweisungen nicht.
Code:
BEGIN{
FS="\t";f=0;h=0;
}
{
if($3=="Picture"){f=1;x=$4;y=$5;
if(f==1&&$3=="Response"&&$4==1){a=0;b=0;c=0;d=0;h++}
else {
if(f==1&&$3=="Response"&&$4!~1&&h<=1){a=$4;b=$5;c=0;d=0; h++}
else {
if (f==1&&$3=="Response"&&$4!~1&&h>=2){c=$4;d=$5; h++}
print x,y,a,b,c,d;f=0;h=0}
}
}
}
END{
}
Code:
a_mask 613612 0 0 0 0
b_norm 633758 2 643824 3 648905
c_mask 612829 2 672729 0 0
d_mask 673899 2 687105 0 0
e_norm 693970 2 694735 0 0
f_mask 714040 0 0 0 0
Ich hab es mit der Schreibweise im Skript oben geschafft, wenigstens alle "Pictures" im Output zu haben, aber die anderen Bedingungen werden ignoriert. Hat jemand Ideen zur Problemlösung?
Vielen Dank im Voraus!
Schöne Grüße,
Hannes