Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 21/02/2013, à 02:44

xana02

Grep apres 3 espace comment faire

Bonjour, j'ai un fichier txt avec

        16547840   1%   69.76kB/s    5:00:50

Pour pas vous mentir c'est une sortie de log Rsync .

Je cherche a mettre dans un autre fichier tout ce qu'il y a avant le % donc pour l'exemple un autre fichier avec 1 dedans , a savoir aussi qu'il faut grep la dernier ligne du fichier .

Il faudrait faire pareil pour la vitesse grep le 69.76kB/s hop encore dans un autre fichier .

et si possible " Encore" Grep la 2 eme ligne du fichier

Voila merci

Hors ligne

#2 Le 21/02/2013, à 04:29

Maisondouf

Re : Grep apres 3 espace comment faire

Grep permet d'isoler une ligne qui contient un motif mais pas de la découper.
Pour ça il y a 'cut' ou 'gawk'.

echo "        16547840   1%   69.76kB/s    5:00:50" | gawk -F " " '{print $2}' | cut -d '%' -f 1
echo "        16547840   1%   69.76kB/s    5:00:50" | gawk -F " " '{print $3}' | cut -d 'k' -f 1

ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor,  OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)

Hors ligne

#3 Le 21/02/2013, à 05:24

xana02

Re : Grep apres 3 espace comment faire

Ca fonctionne , mais il serait possible de lui dire de prendre la dernier ligne du fichier

gawk -F " " '{print $2}' | cut -d '%' -f 1 log.txt , il lie bien le fichier mais s’arrête au premier %

Hors ligne

#4 Le 21/02/2013, à 06:01

nesthib

Re : Grep apres 3 espace comment faire

Est-ce que tu peux donner un extrait plus complet du « fichier » (là tu ne donnes qu'une ligne) ainsi qu'un exemple de la sortie que tu désires avoir ?

@Maisondouf : utiliser cut après awk c'est lâche, tu pourrais tout faire en un coup tongue


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#5 Le 21/02/2013, à 08:32

pingouinux

Re : Grep apres 3 espace comment faire

Bonjour,

Maisondouf  #2 a écrit :

Grep permet d'isoler une ligne qui contient un motif mais pas de la découper.

En fait, l'option -o de grep permet de n'afficher que la partie de la ligne qui correspond au motif. L'option -P permet d'utiliser une expression régulière de type Perl.
Avec ton exemple :

$ grep -Po '\d+(?=%)' <<<"        16547840   1%   69.76kB/s    5:00:50"
1

$ grep -Po '[\d.]+(?=kB/s)' <<<"        16547840   1%   69.76kB/s    5:00:50"
69.76

ou même, en regroupant les deux

$ grep -Po '\d+(?=%)|[\d.]+(?=kB/s)' <<<"        16547840   1%   69.76kB/s    5:00:50"
1
69.76

ou

$ grep -Po '[\d.]+((?=%)|(?=kB/s))' <<<"        16547840   1%   69.76kB/s    5:00:50"
1
69.76

Hors ligne

#6 Le 21/02/2013, à 09:40

credenhill

Re : Grep apres 3 espace comment faire

hello
à tester avec plus de données

awk -F "[ \t%k]*" 'NR==2 {print > "fich1"} {print $2 > "fich2"; print $3 > "fich3"} END{print > "fich4"}' log

Hors ligne

#7 Le 21/02/2013, à 12:43

Maisondouf

Re : Grep apres 3 espace comment faire

nesthib a écrit :

@Maisondouf : utiliser cut après awk c'est lâche, tu pourrais tout faire en un coup tongue

Toujours mon vieux principe... une petite chose bien faite à la fois.


ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor,  OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)

Hors ligne

#8 Le 21/02/2013, à 14:21

xana02

Re : Grep apres 3 espace comment faire

Je vous remercie pour tout ce mal . Mais j'ai toujours un soucie

le fichier log contient

sending incremental file list
Backup.tar

    48267264   0%    0.00kB/s    0:00:00  
    48660480   0%  383.23kB/s    5:03:55  
    49020928   0%  352.66kB/s    5:30:15  
    7036502016  99%  230.53kB/s    0:00:03  
    7036764160  99%  230.01kB/s    0:00:02  
    7037222912  99%  273.87kB/s    0:00:00  
    7037234770 100%  245.62kB/s    7:43:07 (xfer#1, to-check=0/1)

sent 6991939689 bytes  received 31 bytes  251612.71 bytes/sec
total size is 7037234770  speedup is 1.01

Celui ci fais environ 25000 Ligne . Si je fais

grep -Po '\d+(?=%)' log2

 
Il me sort

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

Mais sa risque de prendre trop de temps , il serait possible de lui dire d'aller chercher le caractère derrière le % mais a la dernière ligne du fichier ?

Hors ligne

#9 Le 21/02/2013, à 14:24

xana02

Re : Grep apres 3 espace comment faire

credenhill a écrit :

hello
à tester avec plus de données

awk -F "[ \t%k]*" 'NR==2 {print > "fich1"} {print $2 > "fich2"; print $3 > "fich3"} END{print > "fich4"}' log

J'ai testé j'ai bien 4 fichier qui se crée mais il y a que le premier qui et bon les autre affiche des donnés inutile

Fichier1

Backup.tar

Ok le nom de la 2 eme ligne
Fichier2

incremental
Backup.tar
48267264

6991939689
size

Heuu j'ai pas besoin de ca

et 3-4 c'est quasiment pareil

Hors ligne

#10 Le 21/02/2013, à 14:31

pingouinux

Re : Grep apres 3 espace comment faire

xana02  #8 a écrit :

il serait possible de lui dire d'aller chercher le caractère derrière le % mais a la dernière ligne du fichier ?

Le caractère derrière le %, ou le nombre qui se trouve devant ?
La dernière ligne du fichier, ou la dernière ligne qui contient un % ?

Ajouté :
Est-ce ceci que tu veux ?

grep -Po '\d+(?=%)' log2 | tail -1

Dernière modification par pingouinux (Le 21/02/2013, à 14:32)

Hors ligne

#11 Le 21/02/2013, à 14:35

xana02

Re : Grep apres 3 espace comment faire

pingouinux a écrit :
xana02  #8 a écrit :

il serait possible de lui dire d'aller chercher le caractère derrière le % mais a la dernière ligne du fichier ?

Le caractère derrière le %, ou le nombre qui se trouve devant ?
La dernière ligne du fichier, ou la dernière ligne qui contient un % ?

Ajouté :
Est-ce ceci que tu veux ?

grep -Po '\d+(?=%)' log2 | tail -1

Tu as raison excuse , Je voudrais le nombre avant % , mais a la fin du fichier

Par contre la commande fonctionne mais ca mais un temps fou a parcourir 25000 Ligne en 5 minutes pour un log c'est long ...

Dernière modification par xana02 (Le 21/02/2013, à 14:37)

Hors ligne

#12 Le 21/02/2013, à 14:39

pingouinux

Re : Grep apres 3 espace comment faire

xana02  #11 a écrit :

Je voudrais le nombre avant % , mais a la fin du fichier

Si le % que tu cherches est sur la dernière ligne du fichier :

tail -1 log2 | grep -Po '\d+(?=%)'

Hors ligne

#13 Le 21/02/2013, à 14:42

xana02

Re : Grep apres 3 espace comment faire

pingouinux a écrit :
xana02  #11 a écrit :

Je voudrais le nombre avant % , mais a la fin du fichier

Si le % que tu cherches est sur la dernière ligne du fichier :

tail -1 log2 | grep -Po '\d+(?=%)'

Il faut vraiment que je dorme ...

le dernier % ce trouve pas a la fin mais 4 ligne avant la fin du fichier ...

Hors ligne

#14 Le 21/02/2013, à 14:44

pingouinux

Re : Grep apres 3 espace comment faire

Dans ce cas, la commande que je t'indique en #10 doit marcher.

Ajouté :
Si tu es sûr que c'est la 4ème ligne à partir de la fin :

tail -4 log2 | head -1 | grep -Po '\d+(?=%)'

Dernière modification par pingouinux (Le 21/02/2013, à 14:47)

Hors ligne

#15 Le 21/02/2013, à 14:47

xana02

Re : Grep apres 3 espace comment faire

pingouinux a écrit :

Dans ce cas, la commande que je t'indique en #10 doit marcher.

Oui certe mais le temps que le grep parcours les 25000 ligne il sait passé 5 minutes , mon fichier fais plus de 25000 Ligne .

Je cherche justement un commande pour prendre les 4 dernier ligne et apres utilisé ta commande comme ca au lieu de parcourir 25000 ligne il en parcours 4

Hors ligne

#16 Le 21/02/2013, à 14:48

pingouinux

Re : Grep apres 3 espace comment faire

J'ai complété mon message #14 pendant que tu répondais.

Hors ligne

#17 Le 21/02/2013, à 14:53

credenhill

Re : Grep apres 3 espace comment faire

essayer avec

awk -F "[ \t%k]*" 'NR==2 {print > "fichier1"} /kB/ {print $3 > "fichier2"; print $4 > "fichier3"} END{print > "fichier4"}'  log

Hors ligne

#18 Le 21/02/2013, à 14:55

xana02

Re : Grep apres 3 espace comment faire

J'ai reussi a me faire mon propre code enfin plus ou moins mais grace a vous ^^

tail -c 900 ''log2'' | grep -Po '\d+(?=%)' | tail -1 > Logfini

Hors ligne

Haut de page ↑