AWK & NR Variable

Dieses Thema: "AWK & NR Variable" im Forum "Shell-Skripte" wurde erstellt von tr0nix, 11.05.2005.

  1. #1 tr0nix, 11.05.2005
    Zuletzt bearbeitet: 11.05.2005
    tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Hallo zusammen

    Ich bin gerade am awk Scripten. Nun habe ich das Problem, dass ich zuerst durch die ganze Datei durchparsen muss um einige Informationen rauszuholen um anschliessend einzelne Zeilen nochmals neu einzulesen.

    Dazu dachte ich, kann ich die Variable NR (welches ja die aktuelle Zeilennummer wiedergibt) einfach auf die gewünschte Zeile setzen und dann mittels $... auf das entsprechende Feld zugreifen.

    Irgendwie klappt das nicht :o(

    Hier ist der Codeschnipsel. _CONNECTIONS ist die Anzahl gesamtzeilen im Script (END { _CONNECTIONS = NR; }).
    Code:
            for( NR = 0; NR < _CONNECTIONS; NR++ ) {
                    x=(100 / _CONNECTIONS * NR);
                    y=(50 / _MAXSIZE * $4 );
                    printf("x: %i, y: %i\n", x, y);
            }
    
    Weiss jemand, wieso das nicht geht? Kann man nicht hin-und-herhüpfen in den Zeilen mit awk?

    Helfen würde mir auch, wenn ich mit AWK im vorherrein feststellen könnte, wieviele Zeilen die Input-Datei hat.

    Gruss
    Joel

    P.S.
    Code:
    {
    line[NR] = $0;
    }
    ist keine Lösung.. ich will ggf. mehrere Millionen Zeilen damit analysieren können ;o). So wird der wohl alles ins Memory laden.
     
  2. #2 Wolfgang, 12.05.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Ich bin nicht so vertraut mit AWK, löse solche Dinge meist mit Perl. ;)
    Da bin ich mehr zu Hause.
    Aber dein Problem die Zeilenzahl der Dateien vorher zu bestimmen, würde ich mit
    export var_zeilen=$(wc -l); awk ...
    lösen.
    Wenn du das schnelle wc benutzt, und die Variable exportierst, sollte dein awk Zugriff auf die Variable haben.
    Du kannst natürlich auch im BEGIN Block von awk wc -l selbst als Systembefehl verwenden und den Wert in einer Variablen speichern.
    Hoffe etwas geholfen zu haben.
    Gruß Wolfgang
     
  3. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Naja das dachte cih eben auch zuerst, fands aber ein wenig "unsauber". Ich werde jetzt wohl ein Shellscript-Wrapper drüber lassen und zuerst die Zeilen zählen inklusive allen Informationen die ich brauche und anschliessend ein zweites Script schreiben welches mir mit den von der Shell exportierten Variablen die Auswertung macht.

    Wens interessiert:
    Ich will ein Shellscript schreiben welches als Input ein snoop (solaris tcpdump)-Logfile einliest und daraus auf der Shell ein Kurvendiagram bastelt mit Zeit und bytes-Durchsatz als Achsen.
    Weniger weils nützlich ist, mehr weils einfach cool ist ^^
     
  4. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    @trOnix:

    Das kannst dann gleich mal rüberwachsen lassen, weil ich des öfteren snoop einsetze. :]
     
  5. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Bin noch am entwickeln ;o) komm nicht so vorwärts da es hier plötzlich einen Arbeitsschub gab und Solaris nur im Geschäft vorhanden ist.

    Ich schau, dass ich es so in ner Woche fertigscripten und auf meine HP posten kann ;o)!
     
  6. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
Thema:

AWK & NR Variable

Die Seite wird geladen...

AWK & NR Variable - Ähnliche Themen

  1. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  2. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  3. Teil einer Variablen auslesen und in neue Variable schreiben

    Teil einer Variablen auslesen und in neue Variable schreiben: Hallo, ist für Euch bestimmt ganz einfach, aber trotz googlen komme ich nicht auf eine Lösung. In Variable x habe ich stehen: xy,ab Nun möchte...
  4. SED Variable

    SED Variable: Guten Abend, ich habe ein Problem mit SED. Es wird die Variable nicht in den Test eingefügt. Hier die Anweisung: sed -e 's/$/ =...
  5. sed suchen und ersetzen mit Variable übergeben?

    sed suchen und ersetzen mit Variable übergeben?: hallo, ich habe folgenden sed-Befehl, der schon super ist und auch alles tut, was er tun soll, nur eben natürlich das $i einfach hinschreibt...