Wie ersetze ich nur das letzte Vorkommen von "-" in einer Zeichenfolge durch ein Leerzeichen sed
?
Beispielsweise:
echo $MASTER_DISK_RELEASE
swp-RedHat-Linux-OS-5.5.0.0-03
aber ich möchte die folgende Ausgabe erhalten (Ersetzen des letzten Bindestrichs [“-“] durch ein Leerzeichen)
swp-RedHat-Linux-OS-5.5.0.0 03
text-processing
sed
maihabunash
quelle
quelle
sed
unterstützen keine Musterübereinstimmungen. In diesem Fall benötigen Sie etwas anderes, sei esperl -pne 's/(.*)-/$1 /'
die Parametererweiterungslösung von @ Thor oder etwas anderes.sed -r
.sed -r 's/(.*)-(.*)-/\1 \2 /')
.Sie können dies auch mit der Erweiterung der Bash-Parameter handhaben :
Ausgabe:
quelle
So etwas hat bei mir funktioniert, obwohl ich mir sicher bin, dass es bessere Möglichkeiten gibt
quelle
bash
Parametererweiterungsfunktion geschätzt wird, was gut funktioniert, wenn OP ebenfalls verwendetbash
wird. Es wird ein empfindliches Gleichgewicht zwischen der Lesbarkeit (bis hin zu einer sehr ausführlichen Darstellung) und der Verwendung der richtigen Werkzeuge geben, doch meistens ist die Verwendung der richtigen Werkzeuge entscheidend.