#1 Le 17/02/2015, à 00:29
- tome80
[RESOLU]Comment trier un texte quand il y a un espace comme séparateur
Bonjour,
Je dois afficher les colonnes 2 et 12 (username et processus) de "top" pour une exercice.
top –b –n1 > topoutput.txt pour capturer une instance top.
J'ai parcouru le forum et des solutions existent mais avec sed et awk (que je ne connais pas du tout et j'aurais du mal a expliquer que j'ai fait) or moi je cherche une solution simple de type "cut"
cut -d' ' -f1,12 nomdufichier
cela m'envoi des colonnes qui n'ont rien à voir...
j'ai essayé de convertir l'espace avec un ; avec tr -s " "";" nomdufichier | cut -d' ' -f1,12 nomdufichier mais ça ne fonctionne pas.
je suis pas loin mais je n'arrive plus j'en ai marre.
Pouvez vous m'aider SVP ?
merci d'avance
Dernière modification par tome80 (Le 22/02/2015, à 12:29)
..........quand il est éteint il ne rame pas, c'est sur ..........
Hors ligne
#2 Le 17/02/2015, à 04:11
- J5012
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
la sortie de top produit des caracteres binaires
http://www.thegeekstuff.com/2013/06/cut … -examples/
Hors ligne
#3 Le 17/02/2015, à 06:14
- pingouinux
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
Bonjour,
sed 's/ \+/\t/g' topoutput.txt | cut -f2,13
On remplace les espaces consécutives par une tabulation, qui est le séparateur de champs par défaut pour cut. Il y a un décalage de 1 colonne à cause de la tabulation en début de ligne.
Édité :
Avec awk
awk '{print $1" "$12}' topoutput.txt
Correction de la commande avec sed (voir #6)
sed 's/^ *//;s/ \+/\t/g' topoutput.txt | cut -f1,12
On supprime les espaces de tête, et on remplace les espaces consécutives par une tabulation, qui est le séparateur de champs par défaut pour cut.
Dernière modification par pingouinux (Le 19/02/2015, à 08:23)
Hors ligne
#4 Le 17/02/2015, à 10:08
- Hizoka
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
Sinon une approche différente mais au final plus simple pour les néophytes
top
[appuyer sur f]
[décocher les infos inutiles avec espace]
[appuyer sur echap]
Apres tu peux sauvegarder ton affichage avec SHIFT + W
top -b -n1
top - 09:06:37 up 16 min, 4 users, load average: 5,25, 3,75, 2,39
Tasks: 256 total, 1 running, 255 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4,9 us, 3,2 sy, 47,2 ni, 27,9 id, 16,7 wa, 0,0 hi, 0,1 si, 0,0 st
KiB Mem: 4047016 total, 3922800 used, 124216 free, 341424 buffers
KiB Swap: 0 total, 0 used, 0 free. 1748792 cached Mem
USER COMMAND
hizoka rsync
hizoka amarok
root init
root kthreadd
root ksoftirqd/0
le fichier de sauvegarde se trouve dans ~/.toprc, tu peux l'effacer pour remettre le logiciel avec ses config par defaut.
Dernière modification par Hizoka (Le 17/02/2015, à 10:09)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#5 Le 18/02/2015, à 23:15
- tome80
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
Bonsoir à tous,
merci pingouinux & J5012, mais je voulais éviter sed & awk (dans la mesure su possible, sauf dernière recours, et suis pas loin )
Hizoka, oui top -b -n1 > top.txt capture une instance top dans le top.txt.
le problème c'est que cut -d' ' ne prend pas en compte les espaces comme séparateurs ...
or pour moi cut -d' ' -f2,12 doit envoyer la colonne 2 et 12 en tenant compte le séparateur "espace". or c'est pas le cas.
est-ce je me plante ou c'est impossible (avec cut) d'utiliser l'espace comme délimiteur ?
merci
..........quand il est éteint il ne rame pas, c'est sur ..........
Hors ligne
#6 Le 18/02/2015, à 23:31
- pingouinux
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
est-ce je me plante ou c'est impossible (avec cut) d'utiliser l'espace comme délimiteur
C'est possible, mais le problème est que tu as plusieurs espaces entre certaines colonnes, et ça change selon les lignes. C'est pour cela qu'en #3 j'utilise sed pour remplacer les espaces consécutives par une tabulation, mais on pourrait mettre une seule espace à la place.
Je viens de m'apercevoir que
sed 's/ \+/\t/g' topoutput.txt | cut -f2,13
ne marche pas, car il peut y avoir un nombre variable d'espaces en début de ligne (y compris zéro).
Il faut remplacer par ceci, qui supprime les espaces de tête
sed 's/^ *//;s/ \+/\t/g' topoutput.txt | cut -f1,12
Le plus simple est quand même awk.
Hors ligne
#7 Le 19/02/2015, à 09:24
- Hizoka
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
Hizoka, oui top -b -n1 > top.txt capture une instance top dans le top.txt.
Heuuu oui, je sais bien, j'ai bien compris...
je te donnais une façon de faire ou au final tu n'as pas besoin de commande...
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#8 Le 19/02/2015, à 10:10
- credenhill
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
hello
utiliser tr -s " " qui transforme un nombre quelconque d'espaces en un seul (pour cut)
Hors ligne
#9 Le 19/02/2015, à 15:14
- tome80
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
j'ai essayé avec tr -s de convertir les espaces en : mais soit je me plante quelques part soit c'est autre chose, ça ne fonctionne pas en tout cas.
tr -s " "":" | cut -d: -f2,12
si pas de choix je ferais avec awk tant pis, le pb c'est que je vais devoir m'y mettre avec awk et ça me parait difficile (même si pour cette cmd c'est presque logique $2 $12)
merci
Dernière modification par tome80 (Le 19/02/2015, à 15:16)
..........quand il est éteint il ne rame pas, c'est sur ..........
Hors ligne
#10 Le 19/02/2015, à 15:54
- credenhill
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
tr -s " " ne convertit pas, il remplace plusieurs espace par 1 seul, il faudrait faire : tr -s " " | tr " " ":"
awk est fait pour ça
Hors ligne
#11 Le 19/02/2015, à 18:24
- Hizoka
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
credenhill => merci, je ne connaissais pas tr -s " ".
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#12 Le 21/02/2015, à 00:30
- tome80
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
Bonsoir,
tr -s " "|tr " " ":" < Desktop/top.txt > tr.txt ne fonctionne pas , je l'ai probablement mal posé.
awk très bien, je prends. merci pingouinux.
si d'ici demain y a pas de solution avec tr et cut je cloture,
merci les gars.
..........quand il est éteint il ne rame pas, c'est sur ..........
Hors ligne
#13 Le 21/02/2015, à 06:35
- pingouinux
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
tr -s " "|tr " " ":" < Desktop/top.txt > tr.txt ne fonctionne pas
C'est
tr -s " " < Desktop/top.txt | tr " " ":" > tr.txt
Ajouté :
Tu peux aussi faire ceci
tr -s " " ":" < Desktop/top.txt > tr.txt
Dernière modification par pingouinux (Le 21/02/2015, à 08:44)
Hors ligne
#14 Le 22/02/2015, à 12:29
- tome80
Re : [RESOLU]Comment trier un texte quand il y a un espace comme séparateur
Merci beaucoup, résolu.
je me souviendrais d'AWK (au moins pour ça)
a+
..........quand il est éteint il ne rame pas, c'est sur ..........
Hors ligne