Comment remplacer uniquement la dernière occurrence de "-" dans une chaîne par un espace utilisant sed
?
Par exemple:
echo $MASTER_DISK_RELEASE
swp-RedHat-Linux-OS-5.5.0.0-03
mais je veux obtenir la sortie suivante (en remplaçant le dernier tiret [“-“] par un espace)
swp-RedHat-Linux-OS-5.5.0.0 03
text-processing
sed
maihabunash
la source
la source
sed
ne prennent pas en charge les correspondances de modèles. Dans ce cas, vous aurez besoin d'autre chose, que ceperl -pne 's/(.*)-/$1 /'
soit la solution d'expansion des paramètres de @ Thor ou autre chose.sed -r
.sed -r 's/(.*)-(.*)-/\1 \2 /')
.Vous pouvez également gérer cela avec l' expansion des paramètres bash :
Sortie:
la source
Quelque chose comme ça a fonctionné pour moi, même si je suis sûr qu'il existe de meilleures façons
la source
bash
fonction d'extension des paramètres, qui fonctionne bien si OP l'utilisebash
également. Il y aura un équilibre délicat entre la lisibilité (au point d'être très verbeux) et l'utilisation des bons outils, mais le plus souvent, l'utilisation des bons outils prévaut.