Comment supprimer le dernier Dir avec sed code> (non
DirName code>), comme celui-ci:
echo "/dir1/dir2/dir3/dir4" | sed .....
4 Réponses :
sed 's,/*[^/]\+/*$,,' If it's part of the shell script, then dirname will be definitely more clear.
Cela ne fonctionne pas si le répertoire a un "". (période) dans son nom
@Chriris hein? Pourquoi tu as écrit? Echo A.B / C.D / E.F | SED 'S, / * [^ /] \ + / * $ ,' ' code> renvoie
a.b / c.d code> ou ce n'est pas dans votre version SED? My Regexp n'a rien à voir avec
. Code> du tout.
Dirname a des problèmes avec "." Dans le nom du dir, la regex fonctionne bien.
/etc1/etc2/etc3
Oups, utilisant des virgules comme le délimiteur comme Przemoc indiqué serait mieux pour éviter d'avoir à échapper aux barres obliques dans le script, ce qui la rend plus lisible. Je fais toujours cette erreur.
Vous n'avez pas à utiliser des outils externes p>
$ a = "/ dir1 / dir2 / dir3 / dir4" code> p> p>
$ echo $ {A% / *} code> p>
Bien que la réponse actuellement acceptée soit définitivement bonne, je pense que celui-ci devrait être la réponse acceptée si la question concerne Bash. Substitution des paramètres Bash ressent juste plus «vrai» Bash que SED.
Il ne peut pas être utilisé pour une entrée en continu, cependant.
Vous pouvez utiliser la commande "DirName" Shell: