Regulärer Ausdruck in Shellskript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Riceman
Beiträge: 85
Registriert: 20.05.2003 10:02:17
Kontaktdaten:

Regulärer Ausdruck in Shellskript

Beitrag von Riceman » 14.07.2006 13:00:05

Hallo,

ich bekomme es leider nicht selbst zustande... Prinzipiell weiß ich ja, wie reguläre Ausdrücke funktionieren, aber es zeigt sich einfach nicht das gedachte Verhalten.

Problem: In einem Shellskript steht mir in $line jeweils die aktuelle Zeile einer Textdatei zur Verfügung. Ich muß prüfen, ob diese Zeile die Form

"[mind. ein bel. Zeichen]:[mind. ein bel. Zeichen]:[mind. ein bel. Zeichen]:[bel. viele bel. Zeichen]:[bel. viele bel. Zeichen]"

hat. Insgesamt dürfen nur 4 Doppelpunkte in $line enthalten sein.

Ich habe es mit

echo ${line} | grep "...viele regexps, die nicht funzten..."

versucht, aber oft kam dabei nicht das heraus, was ich erwartet hatte. Der Rückgabewert war im Erfolgsfall die ganze Zeile, schöner wäre natürlich 0 bzw. 1.

Kann mir da jemand nen Tipp geben?

Vielen Dank im Voraus!

MfG
Mario

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 14.07.2006 13:04:57

versuch mal etwas in der Art:

Code: Alles auswählen

[^:]+:[^:]+:[^:]+:[^:]+:[^:]+
Las mich mal raten: Es handelt sich um eine CSV Datei?

Riceman
Beiträge: 85
Registriert: 20.05.2003 10:02:17
Kontaktdaten:

Beitrag von Riceman » 14.07.2006 13:16:50

naja... in etwa so "comma-separated" wie das csv-format von excel ;) eben nicht durch kommas, sondern durch doppelpunkte. das scheint schonmal zu funktionieren, muß nur anfang und ende der zeile noch kennzeichnen, sonst akzeptiert er die zeile auch, wenn danach bzw davor noch andere zeichen kommen, insbesondere weitere doppelpunkte.

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 14.07.2006 13:46:02

Ist nicht weiter schwehr Zeilenanfang und Ende zu markieren:

Code: Alles auswählen

^[^:]+:[^:]+:[^:]+:[^:]+:[^:]+$
Auch wenn CSV "Comma Separated Values" bedeutet kannman jedes belibige Zeichen als trenner verwenden, sofern es nicht in den Elemeten vorkommt.

Antworten