Wie entferne ich das letzte Zeichen nur, wenn es da ist?
Eingang:
OpenOffice.org/m openOffice.org/ozm Pers. Pfg. phil. Prof. Prof. bzw. Roonstr./m roonstr./ozm
gewünschte Ausgabe:
OpenOffice.org openOffice.org Pers Pfg phil Prof bzw Roonstr roonstr
Ich habe es so weit gebracht, dass nur noch der Punkt übrig ist, aber leider entfernt der letzte sed-Befehl auch den Buchstaben g
:
$ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//'
text-processing
grep
sed
entfernen Sie das letzte Mal, wenn es dort ist
quelle
quelle
sed -n '/\./{s=/[^/]*$==;s/\.$//;p}
. Wie auch immergrep
+sed
wird viel länger als nur eine arbeitensed
.sed 's/[./]\+[^./]*$//'
Das Entfernen eines Zeichens nur dann, wenn es vorhanden ist, enthält genau die Beschreibung der Parametererweiterungen.
Der Punkt ist in diesem Fall nichts Besonderes (ein Punkt ist etwas Besonderes in einem regulären Ausdruck).
Das andere Muster könnte entfernt werden mit
%/*
:So entfernen Sie beide:
Um mit einer Quelldatei zu arbeiten, ist es natürlich schneller, sed für die Datei zu verwenden.
Denken Sie nur daran, den Punkt zu zitieren (um ihn wörtlich zu finden, sonst bedeutet es: ein beliebiges Zeichen).
quelle
Ändern Sie einfach leicht Ihren regulären Ausdruck: um dem zu entkommen
.
Und Sie brauchen nichtgrep
quelle