AWK & NR Variable

Dieses Thema 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. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #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
     
  4. 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 ^^
     
  5. 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. :]
     
  6. 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)!
     
  7. 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. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  2. Wie komme ich an den Inhalt des Inhalts einer Variable?

    Wie komme ich an den Inhalt des Inhalts einer Variable?: Hallo Zusammen, ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese...
  3. 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...
  4. 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...
  5. 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...