Diese Eingabe
Code: Alles auswählen
sed 's/[0-9]./[0-9]\t/g'
[0-9]\t
Code: Alles auswählen
sed 's/[0-9]./[0-9]\t/g'
Code: Alles auswählen
$ echo "Kekswettessen 4. Platz" | sed 's/\([0-9]\)\./\1\t/'
Kekswettessen 4 Platz
Dem ist nichts hinzuzufuegen.TRex hat geschrieben:Du nimmst [0-9] in eine Gruppe (mit den Klammern, die du hier escapen musst) und kannst dann mit \1 darauf zugreifen. Soll es wirklich nur ein Punkt sein, dann musst du den wie bei mir auch escapen, sonst matcht der auf alle Zeichen.Code: Alles auswählen
$ echo "Kekswettessen 4. Platz" | sed 's/\([0-9]\)\./\1\t/' Kekswettessen 4 Platz
...und dass man aus rein kosmetischen Gründen vielleicht den Slash als Mustertrenner in der Regex austauschen könnte*:Meillo hat geschrieben:Dem ist nichts hinzuzufuegen.
(... ausser, dass das Newline-Zeichen beim Punkt nicht zu ``alle Zeichen'' gehoert. )
Code: Alles auswählen
sed 's#\([0-9]\)\.#\1\t#'
Man muss den Tab literal eingeben, wenn es portabel sein soll.http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html hat geschrieben: The meaning of an unescaped <backslash> immediately followed by any character other than '&', <backslash>, a digit, <newline>, or the delimiter character used for this command, is unspecified.
Ich habe frueher auch `#' verwendet, tue das aber heute nicht mehr, weil ich finde, dass das Doppenkreuz durch seinen hohen Schwarzwert eher verbindet als trennt. Unterstriche finde ich da optisch trennender. Normalerweise verwende ich aber Kommas, weil die (auf der deutschen Tastatur) am einfachsten zu tippen sind, selten in Such- und Ersatztext vorkommen und in normalem Text auch trennende Bedeutung haben.hikaru hat geschrieben: ...und dass man aus rein kosmetischen Gründen vielleicht den Slash als Mustertrenner in der Regex austauschen könnte*:Code: Alles auswählen
sed 's#\([0-9]\)\.#\1\t#'
Mich schon. Es ist für mich wenig praxisrelevant, da ich praktisch nur auf GNU-Systemen unterwegs bin, aber ich finde es durchaus interessant zu erfahren, wo ich mich durch Nutzung unportabler Konstrukte unbemerkt einsperre.Meillo hat geschrieben:Ach ja, und sed kennt eigentlich kein `\t', jedenfalls kann man nicht davon ausgehen, dass jedes sed das versteht:
[..]
... aber das interessiert ja eh keinen.
Mit "Schwarzwert" meinst du das hohe Figur/Grund-Verhältnis (nicht alle meine Terminals verwenden schwarze Schrift)?Meillo hat geschrieben:Ich habe frueher auch `#' verwendet, tue das aber heute nicht mehr, weil ich finde, dass das Doppenkreuz durch seinen hohen Schwarzwert eher verbindet als trennt.
Ja, das meine ich. Eigentlich haette ich ``Grauwert'' schreiben muessen, so nennt man das in der Typographie.hikaru hat geschrieben:Mit "Schwarzwert" meinst du das hohe Figur/Grund-Verhältnis (nicht alle meine Terminals verwenden schwarze Schrift)?Meillo hat geschrieben:Ich habe frueher auch `#' verwendet, tue das aber heute nicht mehr, weil ich finde, dass das Doppenkreuz durch seinen hohen Schwarzwert eher verbindet als trennt.
Deinem Edit stimme ich voll zu. Genau darum geht es.Edit:
Unabhängig davon, welchen alternativen Mustertrenner man verwendet, sich des Umstands bewusst zu sein, dass man einen benutzen kann ist allein schon hilfreich. Damit kann man es sich im Vergleich zu Slashes als Trenner nämlich ersparen, Slashes im Muster zu escapen. Und das trägt mMn sehr zur Übersichtlichkeit bei.