Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
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!
-
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!
-
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
-
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!
-
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!
-
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!