#26 Le 25/05/2021, à 07:37
- Avi
Re : Données commande"top" tableau [Résolue]
c'est vrai, j'aurais dû réagir en voyant function ET ().
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]
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
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
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]
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é.
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]
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
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]
"${i##+([[:space:]])}"#La
Il te manque un espace avant le #
Merci c'était bien ça !
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,
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
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne