Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/08/2012, à 14:32

drac08

[resolu]AWK Comparer un champ sur plusieurs ligne

Bonjour à tous,

Je voudrais pour un fichier donné, comparer le champ x de chaque ligne et si il est identique avec le même champ présent sur les autres lignes, effectuer plusieurs action. Pourriez-vous m'aider ?

2012-06-07 06:25:30 1ScUGn-0002IB-7j <= hom@bd.missions...org H=(ACFJ4YGMQ1) [182.x.x.x] P=esmtpa A=fixed_login:hom@bd.missions...org S=4591657 id=005301cd4465$6af85e20$40e91a60$@bd.missions...org
2012-06-07 06:25:33 1ScUHt-0002Tn-7k <= hom@bd.missions...org H=localhost [127.0.0.1] P=esmtp S=4592070 id=005301cd4465$6af85e20$40e91a60$@bd.missions...org
2012-06-07 06:25:33 1ScUGn-0002IB-7j => fscoordo@bd.missions...org R=amavis_router T=amavis H=srv1.missions...org [127.0.0.1]
2012-06-07 06:25:33 1ScUGn-0002IB-7j -> homassist@bd.missions...org R=amavis_router T=amavis H=srv1.missions...org [127.0.0.1]

Le champ qui m’intéresse est le 3ème donc $3. La ou je bloque c'est au moment de comparer avec les autres lignes du fichier.

D'avance merci

Dernière modification par drac08 (Le 21/08/2012, à 15:33)

Hors ligne

#2 Le 21/08/2012, à 14:50

pingouinux

Re : [resolu]AWK Comparer un champ sur plusieurs ligne

Bonjour,

$ awk '{n[$3]++}END{for (x in n) {print x " -> " n[x] " fois"}}' fichier
1ScUGn-0002IB-7j -> 3 fois
1ScUHt-0002Tn-7k -> 1 fois

Hors ligne

#3 Le 21/08/2012, à 15:01

credenhill

Re : [resolu]AWK Comparer un champ sur plusieurs ligne

hello

awk '{c3[$3]++}  c3[$3] > 1 { # le champ 3 de la ligne courante était présent dans une ligne précédente

Hors ligne

#4 Le 21/08/2012, à 15:32

drac08

Re : [resolu]AWK Comparer un champ sur plusieurs ligne

Merci beaucoup, la solution pingouinux convient parfaitement.

Hors ligne