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.

#26 Le 25/05/2021, à 07:37

Avi

Re : Données commande"top" tableau [Résolue]

Watael a écrit :

c'est vrai, j'aurais dû réagir en voyant function ET (). smile

EDIT: cadeau Bonus :

$ while IFS='[:,]' read -ra ligne; do printf '%-20s' "${ligne[0]}"; for i in "${ligne[@]:1}"; do printf '%-15s' "${i##+([[:space:]])}"; done; echo; done < <(LC_ALL=C top -b -n 1 | sed -n '2,5{s/used\./used,/;p;}')
Tasks               178 total      1 running      177 sleeping   0 stopped      0 zombie       
%Cpu(s)             22.7 us        19.7 sy        0.0 ni         57.6 id        0.0 wa         0.0 hi         0.0 si         0.0 st         
MiB Mem             7909.1 total   3836.0 free    2122.3 used    1950.8 buff/cache
MiB Swap            19077.0 total  18968.8 free   108.2 used     5213.9 avail Mem

Bonjour,
Pour ma part j'obtiens le tableau ci-dessous avec votre scripte. Comment pourrait-on obtenir un tableau avec des colonnes "droites" ? Le problème est également présent sur le code "US".
Merci d'avance de vos réponses.

Tasks                193 total        1 running    192 sleeping     0 stopped      0 zombie    
%Cpu(s)               6.2 us         6.2 sy         0.0 ni        87.5 id         0.0 wa         0.0 hi         0.0 si         0.0 st       
MiB Mem                3935.9 total   1820.0 free     864.6 used    1251.2 buff/cache
MiB Swap                448.5 total    448.5 free       0.0 used    2828.6 avail Mem 

Hors ligne

#27 Le 25/05/2021, à 09:41

Watael

Re : Données commande"top" tableau [Résolue]

tu as sous doute oublié le shopt -s extglob.


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

Hors ligne

#28 Le 25/05/2021, à 12:16

Avi

Re : Données commande"top" tableau [Résolue]

Watael a écrit :

tu as sous doute oublié le shopt -s extglob.

Effectivement c'était cela, merci beaucoup !

Tasks               186 total      1 running      185 sleeping   0 stopped      0 zombie       
%Cpu(s)             0.0 us         6.7 sy         0.0 ni         93.3 id        0.0 wa         0.0 hi         0.0 si         0.0 st         
MiB Mem             3935.9 total   1840.8 free    781.4 used     1313.7 buff/cache
MiB Swap            448.5 total    448.5 free     0.0 used       2907.3 avail Mem 

Hors ligne

#29 Le 25/05/2021, à 12:55

Avi

Re : Données commande"top" tableau [Résolue]

Si je peux me permettre j'aimerai encore poser quelques questions tongue

Est-ce que la ligne

shopt -s extglob

signifie que shopt active une commande interne et -s sépare les caractères ?

La boucle

while IFS='[:,]' read -ra ligne 

créer bien chaque "cellule" du tableau mais par quelle condition ?

Merci d'avance de vos réponses roll

Hors ligne

#30 Le 25/05/2021, à 17:44

Hizoka

Re : Données commande"top" tableau [Résolue]

while IFS='[:,]' read -ra ligne 

Lit les lignes une à une et crée un tableau en utilisant les séparateurs , ou :
-a : création d'un tableau plutôt que d'une variable.
-r : n’interprète pas les caractères d'échappement.

Dernière modification par Hizoka (Le 25/05/2021, à 17:45)


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

Hors ligne

#31 Le 26/05/2021, à 08:50

Avi

Re : Données commande"top" tableau [Résolue]

Hizoka a écrit :
while IFS='[:,]' read -ra ligne 

Lit les lignes une à une et crée un tableau en utilisant les séparateurs , ou :
-a : création d'un tableau plutôt que d'une variable.
-r : n’interprète pas les caractères d'échappement.

Merci beaucoup pour ton aide !

Désolé de vous demander des explications du code ligne par ligne mais je veux être sur de le comprendre dans son entièreté. big_smile

La partie :

do
    printf '%-20s' "${ligne[0]}"
    
    for i in "${ligne[@]:1}"
    do
        printf '%-15s' "${i##+([[:space:]])}"
    done

affiche donc chaque informations de la top command dans une cellule distincte c'est ça ?

et pour la ligne

done < <(LC_ALL=C top -b -n 1 | sed -n '2,5{s/used\./used,/;p;}')

le -n 1 impose le programme a s'effectuer en une boucle mais que représente la fin de la ligne ( sed -n '2,5 ... ) ?

Merci d'avance pour vos réponses !

Hors ligne

#32 Le 26/05/2021, à 09:02

Hizoka

Re : Données commande"top" tableau [Résolue]

printf '%-20s'

La commande écrit la valeur qu'on lui indique est comble avec des espaces jusqu’à 20 carac au total.
Si la valeur dépasse les 20, il l'affiche tout simplement.

sed -n '2,5{s/used\./used,/;p;}

Travaille sur les lignes 2 à 5.
Remplace used. par used,
Affiche les lignes.


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

Hors ligne

#33 Le 26/05/2021, à 09:44

Avi

Re : Données commande"top" tableau [Résolue]

Hizoka a écrit :
printf '%-20s'

La commande écrit la valeur qu'on lui indique est comble avec des espaces jusqu’à 20 carac au total.
Si la valeur dépasse les 20, il l'affiche tout simplement.

sed -n '2,5{s/used\./used,/;p;}

Travaille sur les lignes 2 à 5.
Remplace used. par used,
Affiche les lignes.

Merci encore pour votre aide ! J'ai pu commenter l'intégralité du code merci beaucoup.

Par contre étrange puisque j'ai bien annoté mes commentaires avec des "#" dans mon code bash mais une fois le scripte exécuté j'obtiens un mixte entre le tableau et mes commentaires lol

Tasks               190 total#La   commande       écrit         la             valeur         quon lui indique est comble avec des espaces jusqu’à 15 carac au                                                total.Si la valeur dépasse les 15, il laffichetout           directement.   1 running#La   commande       écrit         la             valeur         quon lui indique est comble avec des espaces jusqu’à 15 carac au                                                total.Si la valeur dépasse les 15, il laffichetout           directement.   189 sleeping#Lacommande       écrit         la             valeur         quon lui indique est comble avec des espaces jusqu’à 15 carac au                                                total.Si la valeur dépasse les 15, il laffichetout           directement.   0 stopped#La   commande       écrit         la             valeur         quon lui indique est comble avec des espaces jusqu’à 15 carac au                                                total.Si la valeur dépasse les 15, il laffichetout           directement.   0 zombie#La    commande       écrit         la             valeur         quon lui indique est comble avec des espaces jusqu’à 15 carac au                                                total.Si la valeur dépasse les 15, il laffichetout           directement.   
%Cpu(s)             0.0 us#La      commande       écrit         la             valeur         quon lui indique est comble avec des espaces jusqu’à 15 carac au                                                total.Si la valeur dépasse les 15, il laffichetout           directement.   0.0 sy#La      commande       écrit         la             valeur         quon lui indique est comble avec des espaces jusqu’à 15 carac au                                                total.Si la valeur dépasse les 15, il laffichetout           directement.   0.0 ni#La      commande       écrit         la             valeur         quon lui indique est comble avec des espaces jusqu’à 15 carac au                                                total.Si la valeur dépasse les 15, il laffichetout           directement.   100.0 id#La    commande       écrit         la             valeur         quon lui indique est comble avec des espaces jusqu’à 15 carac au                                                total.Si la valeur dépasse les 15, il laffichetout           directement.   0.0 wa#La      commande       écrit         la             valeur         quon lui indique est comble avec des espaces jusqu’à 15 carac au                                                total.Si la val

Pourtant mon code me semble normal :

#!/bin/bash

shopt -s extglob # shopt active une commande interne et -s sépare les caractères

while IFS='[:,]' read -ra ligne # Lit les lignes une à une et crée un tableau en utilisant les séparateurs , ou -a : création d'un tableau  plutôt que d'une variable.-r : n’interprète pas les caractères d'échappement.
do
    printf '%-20s' "${ligne[0]}" #La commande écrit la valeur qu'on lui indique est comble avec des espaces jusqu’à 20 carac au total.Si la valeur dépasse les 20, il l'affiche tout directement.

    for i in "${ligne[@]:1}"
    do
        printf '%-15s' "${i##+([[:space:]])}"#La commande écrit la valeur qu'on lui indique est comble avec des espaces jusqu’à 15 carac au total.Si la valeur dépasse les 15, il l'affiche tout directement.

    done

    echo
done < <(LC_ALL=C top -b -n 1 | sed -n '2,5{s/used\./used,/;p;}') # le -n 1 impose le programme a s'éffectuer en une boucle, Travaille sur les lignes 2 à 5.Remplace used. par used,Affiche les lignes.

Dernière modification par Avi (Le 26/05/2021, à 09:49)

Hors ligne

#34 Le 26/05/2021, à 11:16

Hizoka

Re : Données commande"top" tableau [Résolue]

"${i##+([[:space:]])}"#La

Il te manque un espace avant le #


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

Hors ligne

#35 Le 26/05/2021, à 13:43

Avi

Re : Données commande"top" tableau [Résolue]

Hizoka a écrit :

"${i##+([[:space:]])}"#La

Il te manque un espace avant le #

Merci c'était bien ça ! roll

Hors ligne

#36 Le 26/05/2021, à 14:19

Hizoka

Re : Données commande"top" tableau [Résolue]

Si c'est bon, ajoute un [Résolu] dans le titre de ton topic.


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

Hors ligne

#37 Le 26/05/2021, à 14:28

xubu1957

Re : Données commande"top" tableau [Résolue]

Bonjour,

Hizoka a écrit :

Si c'est bon, ajoute un [Résolu] dans le titre de ton topic.

@Hizoka

L'auteur de la discussion est Pierre WADRA.


Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.                   Membre de Linux-Azur

Hors ligne

#38 Le 26/05/2021, à 15:05

Hizoka

Re : Données commande"top" tableau [Résolue]

ah oui smile


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

Hors ligne