1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

awk & arrays: Dateistruktur erstellen

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von mod_che, 17.03.10.

  1. mod_che

    mod_che Morgenduft

    Dabei seit:
    06.03.07
    Beiträge:
    164
    Hallo,

    folgende Problematik:

    Ich benutze MAC OS X und dort das Terminal, also bash shell:

    Ich lese aus beliebig vielen Dateien die alle WR_Zahl_DA_Zahl heißen die erste Zeile mittels eines awk-Scripts ein.
    Die erste Zeile sieht immer so aus:

    JAHR;MONAT;TAG;Ort1;Ort2;...Ortn;

    Mich interessieren jeweils nur die Orte, also fange ich bei $4 an, nehme das Semikolon als Trenner (;) und ende bei $NF-1 wegen dem letzten Semikolon.

    Code:
    /^Jahr/ { for (i = 4; i<=(NF-1) && $i != ""; i++) arr[i-3] = $i
    
    arr steht dabei für meinen Array, in arr[1]=$4 (=Ort1) usw...

    Erstens verstehe ich nun nicht, warum mir die Ausgabe des Arrays die Orte nicht sortiert zurückgibt

    Code:
    for (zahl in arr)
            printf zahl" "arr[zahl]"\n"
    
    und zweitens würde ich gerne neue Dateien aus dem Array erzeugen und zwar in der Form (siehe oben)

    WR_Zahl_DA_Zahl_Ort-1
    WR_Zahl_DA_Zahl_Ort-2
    WR_Zahl_DA_Zahl_Ort-3
    WR_Zahl_DA_Zahl_Ort-4
    ...
    WR_Zahl_DA_Zahl_Ort-n

    Ist das möglich?

    Danke
    Micha
     
  2. timbooo

    timbooo Gala

    Dabei seit:
    14.07.09
    Beiträge:
    49
    > awk -f script.awk dateimitinhalt.txt
    Code:
    {
    cnt = split($NF, a, ";");
    for (i = 1; i < cnt; i++) {
        if(i > 3) {
          file = a[i]
          print " " > file
        }
      }
    }
    
    Gruß Tim
     
  3. mod_che

    mod_che Morgenduft

    Dabei seit:
    06.03.07
    Beiträge:
    164
    Sehr fein. Werde ich mir alsbald ansehen und die Schleife mal testen! Danke Dir!
     

Diese Seite empfehlen