Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/04/2021, à 09:04

Compte supprimé

[Résolu] Quel est le séparateur dans cette ligne ?

Bonjour,
Je voudrais sélectionner un champ de la réponse obtenue par la commande

df ~ | grep /dev

pour obtenir le pourcentage d'utilisation.

Mais je ne sais pas comment trouver le type de séparateur qui est utilisé par l'affichage et l'indiquer à

 cut -d? -fx

Pouvez-vous m'indiquer une piste ?

Dernière modification par Compte supprimé (Le 15/04/2021, à 09:37)

#2 Le 06/04/2021, à 09:18

pingouinux

Re : [Résolu] Quel est le séparateur dans cette ligne ?

Bonjour,
Le séparateur est "un ou plusieurs espaces". Utilise plutôt awk.
Par exemple, pour obtenir le troisième champ :

df ~ | awk '/\/dev/{print $3}'

Hors ligne

#3 Le 06/04/2021, à 09:20

Zakhar

Re : [Résolu] Quel est le séparateur dans cette ligne ?

Comme dit pingouinux, cut ne fonctionne qu'avec un seul séparateur, or là tu as un nombre d'espace dépendant des tailles affichées, et donc "cut" ne comprend plus.

L'autre option est donc de réduire un ensemble de plusieurs espaces à un seul, en intercalant le "sed" ci-dessous, et ensuite la commande cut marche comme prévu.

df ~ | grep /dev | sed 's/  */ /g' | cut -d" " -f5

(Et l'option sans le grep... car sed sait faire ça aussi, comme le awk montré par pinguouinux)

df ~ | sed -n '/\/dev/s/  */ /gp' | cut -d" " -f5

Dernière modification par Zakhar (Le 06/04/2021, à 09:27)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#4 Le 06/04/2021, à 09:27

Compte supprimé

Re : [Résolu] Quel est le séparateur dans cette ligne ?

Merci beaucoup pour vos explications.
C'est parfait smile

#5 Le 06/04/2021, à 09:55

Compte supprimé

Re : [Résolu] Quel est le séparateur dans cette ligne ?

heu ...
Ce qui fonctionne dans le terminal va moins bien dans un script.
Il me reste à affecter cette commande comme valeur d'une variable. Et là les ' posent problème.
t='df ~ | awk '/\/dev/{print $5}' | cut -c 1-2'

Je cherche comment faire avec.

Dernière modification par Compte supprimé (Le 06/04/2021, à 09:57)

#6 Le 06/04/2021, à 10:02

pingouinux

Re : [Résolu] Quel est le séparateur dans cette ligne ?

t=$(df ~ | awk '/\/dev/{print $5}' | cut -c 1-2)

Hors ligne

#7 Le 06/04/2021, à 10:13

MicP

Re : [Résolu] Quel est le séparateur dans cette ligne ?

Bonjour

Pour sélectionner un champ de la sortie de la commande df
comme par exemple le champ pcent on peut utiliser l'option --output=pcent

michel@xubu:~$ df ~
Sys. de fichiers blocs de 1K Utilisé Disponible Uti% Monté sur
/dev/sda5           17867604 8720812    8216104  52% /
michel@xubu:~$ 
michel@xubu:~$ df ~ --output=pcent
Uti%
 52%
michel@xubu:~$ 

mais bon, il faudra quand même supprimer la ligne d'en-tête, un caractère espace qui précède la valeur retournée, et le % final

Dernière modification par MicP (Le 06/04/2021, à 10:35)

Hors ligne

#8 Le 06/04/2021, à 10:18

Hizoka

Re : [Résolu] Quel est le séparateur dans cette ligne ?

Bonjour,

du coup, je propose :

df ~ --output=pcent | grep -Eo "[0-9]*"

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#9 Le 06/04/2021, à 10:20

Compte supprimé

Re : [Résolu] Quel est le séparateur dans cette ligne ?

A oui, je n'avais pas trouvé les parenthèses.  Merci pour tout.
A plusieurs on avance bien smile

Cela servira peut-être aussi à ce sujet.
https://forum.ubuntu-fr.org/viewtopic.p … #p22437249

Dernière modification par Compte supprimé (Le 06/04/2021, à 10:33)

#10 Le 06/04/2021, à 10:31

Watael

Re : [Résolu] Quel est le séparateur dans cette ligne ?

dès qu'on utilise un langage un peu évolué comme awk ou sed, on oublie tout le reste (grep, cut, sed, awk...).

c'est awk OU sed, tout seul.

Dernière modification par Watael (Le 06/04/2021, à 10:55)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 06/04/2021, à 10:36

MicP

Re : [Résolu] Quel est le séparateur dans cette ligne ?

C'est possible aussi avec sed tout seul :

df ~ --output=pcent | sed '1d;s/[^0-9]//g'

EDIT : correction : ipcent - > pcent

Dernière modification par MicP (Le 06/04/2021, à 11:18)

Hors ligne

#12 Le 06/04/2021, à 10:59

Watael

Re : [Résolu] Quel est le séparateur dans cette ligne ?

pourquoi ipcent ?

Dernière modification par Watael (Le 06/04/2021, à 11:02)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#13 Le 06/04/2021, à 11:17

MicP

Re : [Résolu] Quel est le séparateur dans cette ligne ?

Oooops ! c’est une erreur de copié-collé de mes essais,
désolé, je corrige de suite mon précédent message.

Merci smile

=======
Pour ceux qui voudraient voir la liste des noms de champ utilisables,
voir :

info df

Dernière modification par MicP (Le 06/04/2021, à 11:24)

Hors ligne