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". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 21/02/2013, à 01: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, à 03: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, à 04: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, à 05: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, à 07: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, à 08: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, à 11: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, à 13: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, à 13: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, à 13: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, à 13:32)

Hors ligne

#11 Le 21/02/2013, à 13: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, à 13:37)

Hors ligne

#12 Le 21/02/2013, à 13: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, à 13: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, à 13: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, à 13:47)

Hors ligne

#15 Le 21/02/2013, à 13: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, à 13: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, à 13: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, à 13: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 ↑