Précédent   Forum du club des développeurs et IT Pro > Systèmes > Autres systèmes > Unix > Shell et commandes POSIX
Shell et commandes POSIX Vos questions sur l'utilisation des commandes shell sous Unix.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/01/2013, 23h02   #21
jlliagre
Modérateur
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 1 110
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 1 110
Points : 1 861
Points : 1 861
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}'
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 09/01/2013, 10h21   #22
moctarim
Membre à l'essai
 
Inscription : avril 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 38
Points : 20
Points : 20
Citation:
Envoyé par jlliagre Voir le message
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 !
moctarim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 15h10   #23
moctarim
Membre à l'essai
 
Inscription : avril 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 38
Points : 20
Points : 20
Bonjour,

J'ai essayé de bidouiller en rajoutant 1 autre variable pour le 4ème champ date mais ca ne semble pas fonctionner:


Code

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
Erreur

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
moctarim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 16h16   #24
jack-ft
Membre Expert
 
Inscription : avril 2008
Messages : 799
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 799
Points : 1 808
Points : 1 808
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 :
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
jack-ft est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2013, 16h28   #25
moctarim
Membre à l'essai
 
Inscription : avril 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 38
Points : 20
Points : 20
Citation:
Envoyé par jack-ft Voir le message
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 :
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.
moctarim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 22h14   #26
jlliagre
Modérateur
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 1 110
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 1 110
Points : 1 861
Points : 1 861
Citation:
Envoyé par moctarim Voir le message
Merci. Oui j'avais en effet oublié l'apostrophe.
Tu as aussi oublié de mettre à jour p2. Cette variable est dans ton code toujours égale à une chaine vide, donc la condition n'est jamais remplie. Essaie d'ajouter "p2=$4;" après "p1=$2;".
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2013, 22h26   #27
moctarim
Membre à l'essai
 
Inscription : avril 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 38
Points : 20
Points : 20
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
moctarim est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h18.


 
 
 
 
Partenaires

Hébergement Web