web-dev-qa-db-fra.com

Comment couper le dernier champ d'une chaîne Shell

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!

23
user558134

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
19
user554272

Pour ce que ça vaut, une solution basée sur cut:

NEW_LINE="`echo "$LINE" | rev | cut -d/ -f2- | rev`/"
60
Lucas Jones

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)}'
1
ajreal

echo $LINE | grep -o '.*/' fonctionne aussi.

0
mohit6up