Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Probleme mit awk

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
eq
Gast





BeitragVerfasst am: 18. Feb 2004 14:47   Titel: Probleme mit awk

folgende Ausgangsdatei:

Name,Vorname,Adresse,e-mail,home,data1,data2,data3,data4
Name,Vorname,Adresse,e-mail,home,data1
Name,Vorname,Adresse,e-mail,home,data1,data2,data3,data4
Name,Vorname,Adresse,e-mail,home,data1,data2,data3
Name,Vorname,Adresse,e-mail,home,data1,data2

nun möchte ich die felder data1 bis data$x extraieren:

data1,data2,data3,data4
data1
data1,data2,data3,data4
data1,data2,data3
data1,data2

folgendes script sollte das machen:

BEGIN { FS=",";RS="
" }
{
n=5; #setze Zähler auf 5;
data=substr($6,0); #nimm 5.Zeile als Start, damit data ein gültiger Wert ist
while(data) #solange data gültig
{
n++; #adiere auf Zähler 1
data=substr($n,0) #Nim Inhalt von Feld n
printf("%s," data) #Gib Inahlt von Feld mit "," am Ende aus
}
printf("
"); #Zeilenende
}

Zumindest wäre das für mich "logisch" Wo ist da der Fehler ... ???

DANKE
 

eq
Gast





BeitragVerfasst am: 18. Feb 2004 14:49   Titel: Re: Probleme mit awk

oh einige Fehlerchen im Script ... da wurde was vom Forum verschluckt:

BEGIN { FS=",";RS="\n" } #delimiter ist, Zeilenende ist \n
{
n=5; #setze Zähler auf 5;
data=substr($6,0); #nimm 5.Zeile als Start, damit data ein gültiger Wert ist
while(data) #solange data gültig
{
n++; #adiere auf Zähler 1
data=substr($n,0) #Nim Inhalt von Feld n
printf("%s," data) #Gib Inahlt von Feld mit "," am Ende aus
}
printf("\n"); #Zeilenende
}
 

Jochen
Gast





BeitragVerfasst am: 18. Feb 2004 15:47   Titel: Re: Probleme mit awk

Ui, da machst Du's aber kompliziert...

code:
#!/usr/bin/awk -f
BEGIN {FS="," } # RS muss nicht gesetzt werden, da der Default passt.
NF > 5 { # Nur wenn auch mindestens 6 Felder vorhanden sind (und damit wenigstens data1)
out=""
for (i=6 ; i <= NF ; i++) {
out = out "," $i
}
print substr (out,2) # Das erste Komma unterdrücken
}

Denke Dir "$" als Operator, der den Wert der Variablen nimmt und in das ensprechende Feld der Zeile schaut. Sorry, dass ich mir Deine Lösug nicht näher angetan habe und daher nicht viel zum Fehler sagen kann - vielleicht später noch.

Jochen
 

eq
Gast





BeitragVerfasst am: 18. Feb 2004 16:29   Titel: Re: Probleme mit awk

danke dir .... werde das dann doch gleich mal probieren ...

awk wird mir langsam sehr sympatisch

nochmals vielen vielen Dank
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy