ubuntuusers.de

Variable in awk - Zeilenwert

Status: Gelöst | Ubuntu-Version: Kubuntu 11.04 (Natty Narwhal)
Antworten |

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Nobuddy schrieb:

									
FILENAME ~ "liste.txt" {	gsub("[.:-_/ ]", "", $6);        # Herstellernummer, entfernen von Sonder- u. Leerzeichen $6
...

Erhalte da die Fehlerausgabe:

Fatal: Ungültiges Bereichsende: /[.:-_ ]/

...

Kannst Du mir vielleicht sagen, warum das so ist?

Ja, kann ich. (allerdings hatte ich da bisher auch nicht dran gedacht)

Bei Regulären Ausdrücken kann man auch Bereiche angeben, z.B. "1-9" oder "a-z" und so dachte awk hier, Du wolltest den Bereich von ":" bis "_" haben. (und das geht nicht, weil "_" als Zeichen vor ":" kommt)

Bei mir war das Problem deshalb nicht aufgetreten, weil das "-" als erstes in der eckigen Klammer stand, und dann hat es diese Sonderbedeutung nicht. (genauso, wenn es als letztes Zeichen steht)
Also brauchst Du nur umzustellen:

gsub("[.:_/ -]", "", $6);

und alles ist wieder in Butter.

(schau Dir dazu auf http://www.uni-kassel.de/fb16/neuronale_netze/downloads/Unix_Tools/awk.html nochmal den Abschnitt 5. an)

LG,

track

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Mir ist das auch suspekt vorgekommen, Danke für Deine Erklärung, jetzt funktioniert es! 👍

Antworten |