awk skript: Probleme mit if und else Anweisungen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von h.nietnagel, 15.06.2011.

  1. #1 h.nietnagel, 15.06.2011
    h.nietnagel

    h.nietnagel Grünschnabel

    Dabei seit:
    28.07.2010
    Beiträge:
    9
    Zustimmungen:
    0
    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:

    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{
    
    }
    
    Der Output soll so aussehen:
    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
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 floyd62, 17.06.2011
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Der Hauptteil deines Codes läuft ja komplett innerhalb der Bedingung
    Code:
    if($3=="Picture") {
    ...
    }
    
    Damit ist die Bedingung
    Code:
    if (...$3=="Response"...) {
    
    nicht mehr zu erfüllen, und der ganze Rest wird natürlich ignoriert ...

    Gruss, A.
     
Thema:

awk skript: Probleme mit if und else Anweisungen

Die Seite wird geladen...

awk skript: Probleme mit if und else Anweisungen - Ähnliche Themen

  1. Probleme im Skript

    Probleme im Skript: Ich habe ein folgendes Problem. In home befindet sich noch 997, 998 und 999 In dem Ordner 999 befindet sich und auch im 997 de manual und...
  2. Zeichensatzprobleme - Perlskript mit cygwin unter Windows

    Zeichensatzprobleme - Perlskript mit cygwin unter Windows: Hallo, ich arbeite mit cygwin unter Windows XP und führe damit ein Perlskript aus. Das Skript liest Werte (Strings) aus einer Textdatei und...
  3. Probleme mit Skript (zum Sichern von Dateien)

    Probleme mit Skript (zum Sichern von Dateien): Hallo an alle folgendes Problem: möchte ein skript unter Linux schreiben, welches mir meine Dateien in einem Verzeichnis sichert. Der Aufruf...
  4. Shell Skript beschleunigen

    Shell Skript beschleunigen: Hallo zusammen, ich bin neu hier und hab gerade angefangen mich an Schell Skripte zu wagen. Nun hab eine Frage ich hab ein Skript geschrieben und...
  5. Kontextmenü mit einem Skript verbinden

    Kontextmenü mit einem Skript verbinden: Abend, wenn ich z. B. eine simple Umwandlung eines Bildformates in ein anderes über das KDE-Kontextmenü (Servicemenü nennt es sich im KDE oder...