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

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

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





BeitragVerfasst am: 16. Nov 2004 19:49   Titel: awk problem

möchte eine lange datei mit awk in einzelne dateien aufteilen.
fogender inhalt (beispielauszug)t:
! 003301$
# 3
0 4178.989
1 4178.989
1.1 4179.000
END
! 003304$
# 4
0 4178.989
1 4178.989
1.1 4179.000
END
END

! 003301$ => gibt die nummer unter der text gespeichert werden soll
END => ist das ende eines textblocks

die erste spalte (also 0, 1, 1.1 usw) gibt die zeitschritte
die zweite die zugehörigen werte

END
END => gibt das ende des letzen textblocks und der datei an.

wie kann ich die zeilenanzahl eines blockes bestimmen? bzw. wie bringe ich awk bei, dass er zwischen #3 und END usw. die daten in eine seperate datei schreiben soll?

gruß & dank
arthut
 

heinrich



Anmeldungsdatum: 22.09.1999
Beiträge: 219
Wohnort: N49.137 E8.544

BeitragVerfasst am: 16. Nov 2004 21:40   Titel:

Du könntest hierfür eine Scriptsprache wie z.B. Perl verwenden. Aber auch mit AWK sollte dies möglich sein.
Eventuell benötigst du in AWK ein paar Prozeduren statt alles in einer einzigen grossen Schleife abzuarbeiten. Aber fileopen/-write/-close Funktionen von AWK wirst du auch benötigen.
Die Implementierung deiner Hausaufgaben überlasse ich dir. Wink
_________________
It just works.
 
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name

jochen
prolinux-forum-admin


Anmeldungsdatum: 14.01.2000
Beiträge: 699
Wohnort: Jülich

BeitragVerfasst am: 16. Nov 2004 22:01   Titel:

Die Ausgabe in Dateien ist im awk schnell gemacht. Sowohl print als auch printf verstehen eine Ausgabeumlenkung à la Shell. Mal so als Grundgerüst:
Code:
#!/usr/bin/awk -f
/^!/ {
    blockname = substr ($0,2,length($0-2))
    nest
}
{
      print > blockname
}
In der Variablen blockname wird der Name abgespeichert und bei allen anderen Zeilen werden diese in die Datei geschrieben, deren Name in der Variablen steht.

Ob Du nun den Namen etwas sorgfältiger herausfitzeln musst oder noch bestimmte Zeile ausfiltern musst, liegt an Dir.

Jochen
_________________
Die grösste Lüge der EDV? "Mal eben..."
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

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