#1 Le 21/05/2013, à 19:30
- mond14
(Résolu) Calculer et trier on se basant su un champs
Bonsoir,
J'espère que vous allez tous bien,
j'ai un document texte qui contient des lignes et des champs qui sont séparer par un ; (point_virgule).
je veux appliquer la commande "sort" sur ces ligne en se basant sur la troisème colonne et calculer le nombre de chaque valeur du champs 3 et mettre le resultat dans un nouveau champs à la fin.
EDIJH1;HomH1;687100098;EDIT;OK
KHUIG;HomH1;5664000577;EDIT;OK
THRT1;HomH1;76756000468;EDIT;OK
KHTJG;HomH1;5664000577;EDIT;OK
THRT1;HomH1;76756000468;EDIT;OK
merci pour votre aide
Dernière modification par mond14 (Le 22/05/2013, à 11:27)
Hors ligne
#2 Le 21/05/2013, à 19:45
- pingouinux
Re : (Résolu) Calculer et trier on se basant su un champs
Rebonjour,
Déjà, pour faire le tri
$ sort -n -t";" -k3,3 fichier
EDIJH1;HomH1;687100098;EDIT;OK
KHTJG;HomH1;5664000577;EDIT;OK
KHUIG;HomH1;5664000577;EDIT;OK
THRT1;HomH1;76756000468;EDIT;OK
THRT1;HomH1;76756000468;EDIT;OK
Ajouté :
Je ne suis pas certain que ce soit ceci que tu veuilles
$ sort -n -t";" -k3,3 fichier | awk 'BEGIN{FS=OFS=";"}{$6=++n[$3];print}'
EDIJH1;HomH1;687100098;EDIT;OK;1
KHTJG;HomH1;5664000577;EDIT;OK;1
KHUIG;HomH1;5664000577;EDIT;OK;2
THRT1;HomH1;76756000468;EDIT;OK;1
THRT1;HomH1;76756000468;EDIT;OK;2
ou bien cela
$ sort -n -t";" -k3,3 ii | awk 'BEGIN{FS=OFS=";"}{c3=$3;$6=++n[c3];print}'|tac|awk 'BEGIN{FS=OFS=";"}{if(n[$3]++)$6=c6;else c6=$6;print}'|tac
EDIJH1;HomH1;687100098;EDIT;OK;1
KHTJG;HomH1;5664000577;EDIT;OK;2
KHUIG;HomH1;5664000577;EDIT;OK;2
THRT1;HomH1;76756000468;EDIT;OK;2
THRT1;HomH1;76756000468;EDIT;OK;2
Dernière modification par pingouinux (Le 21/05/2013, à 20:03)
Hors ligne
#3 Le 21/05/2013, à 20:02
- mond14
Re : (Résolu) Calculer et trier on se basant su un champs
Bonsoir,
Merci beaucoupe pour votre réponse Monsieur,
ce que je veux c'est qu'il me met par exemple ça
EDIJH1;HomH1;687100098;EDIT;OK;1
KHTJG;HomH1;5664000577;EDIT;OK;2
KHUIG;HomH1;5664000577;EDIT;OK;2
THRT1;HomH1;76756000468;EDIT;OK;2
THRT1;HomH1;76756000468;EDIT;OK;2
je veut qu'il me donne dans le dernier champsle nombre de fois ou la valeur du champs 3 se repete dan le fichier
merci beacoup
Hors ligne
#4 Le 21/05/2013, à 20:25
- pingouinux
Re : (Résolu) Calculer et trier on se basant su un champs
Ça correspond à ma dernière proposition en #2.
Hors ligne
#5 Le 21/05/2013, à 20:34
- mond14
Re : (Résolu) Calculer et trier on se basant su un champs
Merci beaucoup pour votre aid
Hors ligne
#6 Le 21/05/2013, à 23:31
- mond14
Re : (Résolu) Calculer et trier on se basant su un champs
Bonsoir,
j'ai une autre question s'il vous plait.
et si on veut calculer on se basant sur deux champs le troisième et le sixième?
exemple :
EDIJH1;HomH1;687100098;EDIT;OK;5555555
KHTJG;HomH1;5664000577;EDIT;OK;9999999
KHUIG;HomH1;5664000577;EDIT;OK;9999999
THRT1;HomH1;76756000468;EDIT;OK;7676767
THRT1;HomH1;76756000468;EDIT;OK;9292929
si on veut un resultat comme ça qu'onva ajouter en 7ème champs :
EDIJH1;HomH1;687100098;EDIT;OK;5555555;1
KHTJG;HomH1;5664000577;EDIT;OK;9999999;2
KHUIG;HomH1;5664000577;EDIT;OK;9999999;2
THRT1;HomH1;76756000468;EDIT;OK;7676767;1
THRT1;HomH1;76756000468;EDIT;OK;9292929;1
qu'est ce qu'on doit modifier dans le codes?
$ sort -n -t";" -k3,3 ii | awk 'BEGIN{FS=OFS=";"}{c3=$3;$6=++n[c3];print}'|tac|awk 'BEGIN{FS=OFS=";"}{if(n[$3]++)$6=c6;else c6=$6;print}'|tac
Hors ligne
#7 Le 22/05/2013, à 06:39
- pingouinux
Re : (Résolu) Calculer et trier on se basant su un champs
S'agit-il d'un exercice d'école ?
Sur quel(s) champ(s) faut-il trier les lignes ?
Faut-il ensuite compter les lignes dont le champ 6 est identique, ou la concaténation des champs 3 et 6 ?
Hors ligne
#8 Le 22/05/2013, à 11:27
- mond14
Re : (Résolu) Calculer et trier on se basant su un champs
Bonjour ,
Merci j'ai trouvé la solution,
awk -F";" '{a[$3,$6]++; aa[++n]=$0}END{for(i=1;i<=n;i++){split(aa[i],A,";");print aa[i]";"a[A[3],A[6]]}}' fichier | sort ...
merci
Hors ligne