Renseignement sur awk

Résolu/Fermé
guitou429 Messages postés 198 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 17 septembre 2012 - 21 juil. 2009 à 21:52
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 - 21 juil. 2009 à 22:33
Bonjour tout le monde,

Je voudrais savoir ce que signifie la ligne suivante exactement :

count1=$(ping -c 4 192.168.1.10 | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')

D'après ce que je comprend :

On effectue une requete ping de l'adresse 192.168.1.10 et on analyse les 4 premieres lignes de la reponse.
On compte le nmbre de fois où on trouve le mot 'received'.
Mais que signifie la fin : | awk -F',' '{ print $2 }' | awk '{ print $1 }'

Je vous remercie pour vos futures explications !

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
21 juil. 2009 à 22:24
Salut,
awk -F',' '{ print $2 }' 
En indiquant que le délimiteur de chanps sera la virgule (-F',')
on demande d'afficher le second champ ($2)

awk '{ print $1 }')
Avec le délimiteur par défaut (espace ou tabulation), on affiche le 1er champ ($1)
;-))
0
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 473
21 juil. 2009 à 22:33
@jipicy

tes explications sont plus précises !

merci.

:-)
0
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 473
21 juil. 2009 à 22:28
Bonjour,

ping -c 4 = on lance 4 ping ..........................."et pi c'est tout"

grep 'received' = on filtre les résultats du ping avec le mot "received"

puis on traîte, avec awk, les lignes filtrées, en récupérant le champs 2 qui est retraîté à nouveau par awk pour récupérer le champs 1 !

 > redfox@mandriva[192.168.1.2]:~/Desktop$ ping -c 4 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.788 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.788 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.760 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.788 ms

--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.760/0.781/0.788/0.012 ms
> redfox@mandriva[192.168.1.2]:~/Desktop$ ping -c 4 192.168.1.1 | grep 'received'
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
> redfox@mandriva[192.168.1.2]:~/Desktop$
> redfox@mandriva[192.168.1.2]:~/Desktop$ ping -c 4 192.168.1.1 | grep 'received' | awk -F',' '{ print $2 }'
 4 received
> redfox@mandriva[192.168.1.2]:~/Desktop$ ping -c 4 192.168.1.1 | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }'
4
> redfox@mandriva[192.168.1.2]:~/Desktop$ 

faut pas hésiter à tester soit-même pour comprendre .....
0