Comment couper le dernier champ de cette chaîne Shell
LINE="/string/to/cut.txt"
Pour que la chaîne ressemble à ceci
LINE="/string/to/"
Merci d'avance!
Je pense que vous pouvez utiliser la commande "dirname". Il prend en entrée un chemin de fichier, supprime la partie du nom de fichier et retourne le chemin. Par exemple:
$ dirname "/string/to/cut.txt"
/string/to
Pour ce que ça vaut, une solution basée sur cut
:
NEW_LINE="`echo "$LINE" | rev | cut -d/ -f2- | rev`/"
Cela fonctionnera dans les versions modernes de Bourne telles que Dash, BusyBox ash, etc., ainsi que dans les descendants tels que Bash, Korn Shell et Z Shell.
LINE="/string/to/cut.txt"
LINE=${LINE%/*}
ou pour conserver la barre oblique finale:
LINE=${LINE%/*}/
echo "/string/to/cut.txt" | awk -F'/' '{for (i=1; i<NF; i++) printf("%s/", $i)}'
echo $LINE | grep -o '.*/'
fonctionne aussi.