[RESOLU]Supprimer le dernier caractére d'une varible

Bonjour,

J’essaye de réalisé un petit script de contrôle de l’espace disque. Et j’aimerai avoir le pourcentage d’utilisation des différente partition.

Je voulais par exemple récupère le pourcentage pour la partition / sous la forme “6” et pas “6%”

df -h > /tmp/dfh ED_0=`head -2 /tmp/dfh | grep " /" | tr -s " " | cut -d " " -f 5`

ED_0 vaut 6%.

Avez vous solutions simple a me proposé pour faire soté le % sachant que je peux etre confronté a des nombre a 1,2 voir 3 chiffres.

Merci :slightly_smiling:

J’ai trouvé :

Merci quand même, en espérant que ca servent un jour a quelqu’un.

T’as trouvé la solution avant même que j’ai le temps de voir le sujet! C’est pas gentil.

Pour la peine deux choses tiens :
Je connais pas cette astuces de bash/zsh en fait c’est quoi exactement ?

Ensuite trois petites remarques pas méchantes pour deux sous sur ton code :
[ul]
[li]df -h > /tmp/dfh ED_0=`head -2 /tmp/dfh | grep " /" | tr -s " " | cut -d " " -f 5`
Passer par un fichier n’est pas forcément souhaitable parce que c’est plus lent et tu dois le supprimer à la fin, faire gaffe qu’il n’existe pas déjà,… donc tu peut faire ça

(oui j’aime l’uniligne :slightly_smiling: )[/li]
[li]Ensuite je ne comprend pas très bien l’astuce du « head -2 | grep " /" ? C’est pour trouver la partition root ? Si c’est le cas tu peut directement le faire avec grep :

[li]Enfin dernière chose, awk/gawk c’est plus simpas à utiliser que cut qui est vraiment très basique il permet de remplacer « tr -s " " | cut -d " " -f 5 » par

Enfin on peut retirer le dernier caractère en awk avec

Sinon il y a ma vielle méthode en sed :

n’est ce pas joli ? :slightly_smiling: Il te vire même le %.

Edit: à force de chercher j’ai vu une solution en awk pur (index permet de bien vérifier que c’est un % qu’on enlève :

et la version full sed :

Bon maintenant je vais prendre médicament… merci beaucoup j’ai pu approfondir mes connaissances :slightly_smiling:

J ai encore beaucoup a apprendre en Shell/bash merci je regarderai demain a tête repose :slightly_smiling:.Merci encore.

Là c’est plus vraiment du bash, ça s’exécute pareil sur tout shell POSIX.
En fait généralement ce genre de traitement (et les tâche plus programmation genre calcul mathématiques), on peut rapidement se retrouver à écrire simplement du code en sed (pour les tordu), gawk ou perl.

Regarde par exemple ce fil là (et la verbosité des différentes solutions) :
Parcourir une chaîne en bash

J’utilise sed pour enlever un nombre précis de caractères:
echo $ED_0 | sed ‘s/.$//’

Enlever les 3 premiers:
echo $ED_0 | sed ‘s/^…//’

Pour n’enlever qu’un seul caractèr je trouve ça solution propre bien que je ne la comprends pas encore…

Pourtant, si tu connais un tant soit peu les regex, c’est façile:

avec sed, qui utilise les regex à la méthode de perl,
c’est s/expression_a_remplacer/texte_de_remplacement/
sachant que:
le . désigne “n’importe quel caractère”,
le $ signifie que ce n’importe quel caractère doit se trouver à la fin de la chaine examinée et
le // signifie qu’il n’y a donc aucun texte de remplacement vu qu’il n’y a rien entre chaque “/”, donc le dernier caractère de la chaine est remplacé par rien ==> supprimé.

voila.
tout bête, n’est-ce pas?

Non c’est ça que je n’avais jamais vu :