awk & arrays: Dateistruktur erstellen

mod_che

Morgenduft
Registriert
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
 

timbooo

Gala
Registriert
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
 

mod_che

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