Code:
1
2
3
4
5
6 awk -F";" ' BEGIN {p1="";OFS=";"} NR==1 {print;next;} NR==2 {ol=$0;next;} {nl=$0;n=($2==p1)?0:1;p1=$2;$0=ol;$14=n;print;ol=nl} END {$0=ol;$14=1;print}'
Version imprimable
Code:
1
2
3
4
5
6 awk -F";" ' BEGIN {p1="";OFS=";"} NR==1 {print;next;} NR==2 {ol=$0;next;} {nl=$0;n=($2==p1)?0:1;p1=$2;$0=ol;$14=n;print;ol=nl} END {$0=ol;$14=1;print}'
Super merci beaucoup
Je viens de constater qu'on reconnait une ligne redondante par le champ date aussi (4ème champ). Donc on a le champ 2 et le champ 4. Désolé je n'ai pas été très précis lors de mes premiers posts.
De même pour les 2 premières lignes le nombre de contrat est identique et j'ai 1 partout dans les champs Nombre de mouvements
Voici un exemple
Entrée
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Champ1;Contrat_ID;Champ3;Date;Champ5;Champ6;Champ7;Champ8;Champ9;Champ10;Champ11;Champ12;Champ13;Nombre_Mouvements;Champ15;Champ16;Champ17;champ18 xxxxxxxxxx;33;xxxxxxxxxx;15/11/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;33;xxxxxxxxxx;15/11/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;07/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;07/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;07/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;09/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;09/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;36;xxxxxxxxxx;08/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0 xxxxxxxxxx;68;xxxxxxxxxx;20/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;;0;0;0;0
Sortie actuelle
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Champ1;Contrat_ID;Champ3;Date;Champ5;Champ6;Champ7;Champ8;Champ9;Champ10;Champ11;Champ12;Champ13;Nombre_Mouvements;Champ15;Champ16;Champ17;Champ18 xxxxxxxxxx;33;xxxxxxxxxx;15/11/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;1;0;0;0;0 xxxxxxxxxx;33;xxxxxxxxxx;15/11/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;1;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;07/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;07/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;07/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;09/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;09/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;1;0;0;0;0 xxxxxxxxxx;36;xxxxxxxxxx;08/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;1;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;68;xxxxxxxxxx;20/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;1;0;0;0;0
Sortie souhaitée
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Champ1;Contrat_ID;Champ3;Date;Champ5;Champ6;Champ7;Champ8;Champ9;Champ10;Champ11;Champ12;Champ13;Nombre_Mouvements;Champ15;Champ16;Champ17;Champ18 xxxxxxxxxx;33;xxxxxxxxxx;15/11/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;33;xxxxxxxxxx;15/11/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;1;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;07/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;07/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;07/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;1;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;09/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;34;xxxxxxxxxx;09/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;1;0;0;0;0 xxxxxxxxxx;36;xxxxxxxxxx;08/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;1;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;42;xxxxxxxxxx;15/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;0;0;0;0;0 xxxxxxxxxx;68;xxxxxxxxxx;20/12/2012;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;xxxxxxxxxx;1;1;0;0;0;0
Je ne saurai comment vous remercier.
Bonne journée !
Bonjour,
J'ai essayé de bidouiller en rajoutant 1 autre variable pour le 4ème champ date mais ca ne semble pas fonctionner:
Code
ErreurCode:
1
2
3
4
5
6 cat resulat_final.csv | awk -F";" BEGIN {p1="";p2="";OFS=";"} NR==1 {print;next;} NR==2 {ol=$0;next;} {nl=$0;n=($2==p1 && $4==p2)?0:1;p1=$2;$0=ol;$14=n;print;ol=nl} END {$0=ol;$14=1;print} > resulat_final_termine.csv
Code:
1
2 ./1.sh[4]: BEGIN: not found. ./1.sh[5]: Syntax error at line 6 : `}' is not expected.
Une petite aide serait plus que la bienvenue. Merci beaucoup :mouarf:
Si tu compares le message que tu as envoyé avec l'original, tu verras que les couleurs sont différentes des couleurs d'origine!
La couleur n'est pas cruciale en soi... mais elle est la preuve que le colorateur syntaxique du site a bien fait son boulot... (contrairement à toi :mouarf:)
La commande awk prend en argument une chaine de caractères représentant un programme awk et qui doit être entourée de guillemets (simples ou doubles).
Bref, essaie (sans oublier les apostrophes, ce coup-ci):
Code:
1
2
3
4
5
6 cat resulat_final.csv | awk -F";" ' BEGIN {p1="";p2="";OFS=";"} NR==1 {print;next;} NR==2 {ol=$0;next;} {nl=$0;n=($2==p1 && $4==p2)?0:1;p1=$2;$0=ol;$14=n;print;ol=nl} END {$0=ol;$14=1;print}' > resulat_final_termine.csv
Merci. Oui j'avais en effet oublié l'apostrophe. Le programme compile sans erreur sans j'ai toujours 1 dans le champ Nombre de mouvements. Alors que je devrais trouver 0 ou 1 en fonction des doublons sur les champs 2 et 4. La dernière redondance prend la valeur 1 et les précédentes 0.
Etant un novice en shell Je pense que j'ai mal adapté le programme de jlliagre. merci de votre aide.
Merci je vais donc tester ca demain matin.
Le code final devrait donc être:
Code:
1
2
3
4
5
6 cat resulat_final.csv | awk -F";" ' BEGIN {p1="";p2="";OFS=";"} NR==1 {print;next;} NR==2 {ol=$0;next;} {nl=$0;n=($2==p1 && $4==p2)?0:1;p1=$2;p2=$4;$0=ol;$14=n;print;ol=nl} END {$0=ol;$14=1;print}' > resulat_final_termine.csv