Code : Sélectionner tout - Visualiser dans une fenêtre à part
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}'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
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)
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager