Frage zu sed [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Frage zu sed [gelöst]

Beitrag von Duff » 08.01.2008 16:50:37

Hallo,

ich stehe gerade vor einem kleinen sed-Problem und finde den Fehler noch nicht.

Code: Alles auswählen

daniel@debian> cat datei | sed -e 's/^WORT_WORT[^\.]\([0-9]+\)\.end\.err$/\1l/g'
WORT_WORT2545439.end.err
WORT_WORT1314632.end.err
WORT_WORT2204634.end.err
WORT_WORT3334638.end.err
WORT_WORT2345650.end.err
WORT_WORT4874651.end.err
WORT_WORT3454653.end.err
WORT_WORT1204657.end.err
WORT_WORT612358.end.err
WORT_WORT6734612.end.err
Ich möchte als Ergebnis nur die Zahlen aus dem Namensstring haben.
Aber was mache ich falsch???
Zuletzt geändert von Duff am 08.01.2008 17:28:12, insgesamt 1-mal geändert.
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Beitrag von Meillo » 08.01.2008 17:07:38

das funzt:

Code: Alles auswählen

cat datei | sed  -e 's/^WORT_WORT\([0-9]\+\)\.end\.err$/\1/'
Was wolltest du denn mit [^\.] ?
Das Plus muss escaped werden.
Das g am Ende ist nicht nötig.
Use ed once in a while!

Benutzeravatar
P17
Beiträge: 35
Registriert: 04.01.2008 18:08:12
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Germany
Kontaktdaten:

Beitrag von P17 » 08.01.2008 17:09:43

Code: Alles auswählen

sed -e 's/[A-Z_a-z.]/ /g' 
Debian GNU/Linux lenny | Kernel 2.6.26-2-686 | Fluxbox-1.0.0
----
http://www.p17-linuxzone.de/

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 08.01.2008 17:26:09

Danke.

Es handelt sich hier um ein HP-UX. Hatte ich vergessen zu erwähnen.

Ich habe auch den größten Denkfehler von mir gefunden. Bei sed (und grep) gibt es das +-Zeichen nicht (ein oder mehrmalige Wiederholung).

[edit]
Anstelle des +-Zeichens muss man \{1,\} verwenden.
So funktioniert es dann auch.
[/edit]
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Beitrag von Meillo » 08.01.2008 17:55:12

Duff hat geschrieben:Es handelt sich hier um ein HP-UX. Hatte ich vergessen zu erwähnen.

Ich habe auch den größten Denkfehler von mir gefunden. Bei sed (und grep) gibt es das +-Zeichen nicht (ein oder mehrmalige Wiederholung).
so pauschal kann man das nicht sagen. GNU grep z.B. hat den Plus-Quantor schon. Aber \{1,\} löst es natürlich auf portablere Weise.
Was wolltest du denn mit [^\.] ?
Da liegt bestimmt auch noch ein Fehler, denn dies bedeutet: "Irgend ein Zeichen, das kein Punkt ist." und das meinst du damit wohl eher nicht, schätze ich. Denn sonst fällt die erste Zahl nicht in die Klammer. (btw: AFAIR müssen die Sonderzeichen innerhalb der eckigen Klammern nicht escaped werden.)
Use ed once in a while!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 08.01.2008 18:54:02

Meillo hat geschrieben:Zeichen, das kein Punkt ist." und das meinst du damit wohl eher nicht, schätze ich. Denn sonst fällt die erste Zahl nicht in die Klammer. (btw: AFAIR müssen die Sonderzeichen innerhalb der eckigen Klammern nicht escaped werden.)
Stimmt, dass hatte ich auch noch vergessen, dass man in den eckigen Klammern die Sonderzeichen nicht escapen muss.
Danke für den Hinweis!
Oh, yeah!

Antworten