Hallo, ich muss mit AWK eine Datei zerlegen. Leider halten sich die Ersteller nicht immer an die Syntax, mal sind Tabs die Trenner, mal Leerzeichen. Wenn ich dem awk keinen FS mit -F mitgebe ignoriert er ja anführende Leerzeichen, das heißt das ein String, der am Anfang mehrere Lehrzeichen enthällt, als "$1" durchgeht, obwohl er eigentlich was anderes sein soll. Kann ich dem awk beibringen das er sowohl Tabstops als auch Leerzeichen als Fieldseparator annimmt? Und zwar ohne die ersten Leerzeichen zu ignorieren? Gruß Daniel -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Daniel Spannbauer schrieb:
Hallo,
ich muss mit AWK eine Datei zerlegen. Leider halten sich die Ersteller nicht immer an die Syntax, mal sind Tabs die Trenner, mal Leerzeichen. Wenn ich dem awk keinen FS mit -F mitgebe ignoriert er ja anführende Leerzeichen, das heißt das ein String, der am Anfang mehrere Lehrzeichen enthällt, als "$1" durchgeht, obwohl er eigentlich was anderes sein soll.
Kann ich dem awk beibringen das er sowohl Tabstops als auch Leerzeichen als Fieldseparator annimmt? Und zwar ohne die ersten Leerzeichen zu ignorieren?
Wäre es nicht besser den Ersteller der Datei dazu zu bewegen sich an ein festes Format zu halten. Du wirs dich ansonsten permanet damit beschäftigen müssen nachzuarbeiten. -- i.A. Ralf Prengel Customer Care Manager Comline AG Hauert 8 D-44227 Dortmund/Germany Fon +49231 97575- 904 Fax +49231 97575- 905 EMail ralf.prengel@comline.de www.comline.de Vorstand Stephan Schilling, Erwin Leonhardi Aufsichtsrat Dr. Franz Schoser (Vorsitzender) HR Dortmund B 14570 USt.-ID-Nr. DE 124727422 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 10. März 2008 11:06:11 schrieb Daniel Spannbauer:
Hallo,
ich muss mit AWK eine Datei zerlegen. Leider halten sich die Ersteller nicht immer an die Syntax, mal sind Tabs die Trenner, mal Leerzeichen. Wenn ich dem awk keinen FS mit -F mitgebe ignoriert er ja anführende Leerzeichen, das heißt das ein String, der am Anfang mehrere Lehrzeichen enthällt, als "$1" durchgeht, obwohl er eigentlich was anderes sein soll.
Kann ich dem awk beibringen das er sowohl Tabstops als auch Leerzeichen als Fieldseparator annimmt? Und zwar ohne die ersten Leerzeichen zu ignorieren?
tab2space "vorschalten", wobei man -t1 angibt (== 1 tab = 1 Space) also etwa so: tab2space -t 1 file | awk .... bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Dr. Jürgen Vollmer schrieb:
Am Montag, 10. März 2008 11:06:11 schrieb Daniel Spannbauer:
Hallo,
ich muss mit AWK eine Datei zerlegen. Leider halten sich die Ersteller nicht immer an die Syntax, mal sind Tabs die Trenner, mal Leerzeichen. Wenn ich dem awk keinen FS mit -F mitgebe ignoriert er ja anführende Leerzeichen, das heißt das ein String, der am Anfang mehrere Lehrzeichen enthällt, als "$1" durchgeht, obwohl er eigentlich was anderes sein soll.
Kann ich dem awk beibringen das er sowohl Tabstops als auch Leerzeichen als Fieldseparator annimmt? Und zwar ohne die ersten Leerzeichen zu ignorieren?
tab2space "vorschalten", wobei man -t1 angibt (== 1 tab = 1 Space)
also etwa so: tab2space -t 1 file | awk ....
Mir wärs umgekehrt lieber, als space2tab :) Gibts aber auf meinem System nicht. Mit tabs kann mein Script bereits umgehen. Gruß Daniel
bye Jürgen
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 10 Mär 2008, Daniel Spannbauer schrieb:
Kann ich dem awk beibringen das er sowohl Tabstops als auch Leerzeichen als Fieldseparator annimmt? Und zwar ohne die ersten Leerzeichen zu ignorieren?
RTFM: Fields In the special case that FS is a single space, fields are separated by runs of spaces and/or tabs and/or newlines. awk -F' ' ... awk -F'[ \t]' ... awk -F'[ \t]+' ... Je nachdem was du willst. -dnh -- Remember: the value of $/ is a string, not a regex. awk has to be better for something. :-) -- man perlvar -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (4)
-
Daniel Spannbauer
-
David Haller
-
Dr. Jürgen Vollmer
-
Ralf Prengel