#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