Aide Débutant Unix - Supprimer une ligne..

Résolu
Joker -  
 Joker -
Bonjour,

Je dois faire un listing des personnes qui ont subit une modification de contrat, d'affectation ou de poste ainsi que les entrées et les départs d'agents.
Je fais tout les jour un fichiers des agents présents dans l'entreprise que je compare à un fichier référence ( celui de la veille)
Je compare de fichier avec un COMM et je demande d'afficher les lignes uniques dans le fichiers 1 et le fichiers 2 sauf que lorsque que j'ai une modification sur l'une des informations d'un agent il apparait deux fois dans mon fichier final alors que j'aimerai avoir que la ligne avec la nouvelle information ( la ligne du fichier 2 celui du jour J)

Exemple :

Matricule;Civilité;Nom ;Prénom;DateEmbauche;DateDepart;Statut;Affectation;Activite;Observation;Direction;Departement
VEDX314;Mademoiselle;KWWWWW;Anne-Christine;07/12/2009;;CDD;Siège;ASSISTANT(E) DE DIRECTION;30 BOULEVARD GALLIENI 92130 ISSY LES MOULINEAUX;17;17 =>ligne unique du fichier ref
VJYL326;Monsieur;BXXXXX;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE MISSION;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48 =>ligne du fichier Ref
VJYL326;Monsieur;BXXXXX;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE PROJET MOA;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48 => ligne du fichier du jour

La ligne seulement présente dans le fichier Ref : j'en ai besoin car ça veut dire que c'est un agent qui est sortie
Par contre pour les deux suivantes seuleument la deuxieme ligne m'intéresse.

Je me suis dis que je pouvais peut être faire un test sur le matricule en lui disant : "si matricule apparait sur deux ligne ne prendre que la deuxieme ligne"
maintenant comment codé ça en unix !!!

si quelqu'un peut m'aider merci d'avance.
Configuration: Windows XP Internet Explorer 6.0

8 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    si le matricule ($1) du fichier jour est présent en traitant le matricule dans le fichier ref, on ne l'imprime pas
    $ 
    $ cat ref 
    Matricule;Civilité;Nom;Prénom;DateEmbauche;DateDepart;Statut;Affectation;Activite;­Observation;Direction;Departement
    VEDX314;Mademoiselle;KWWWWW;Anne-Christine;07/12/2009;;CDD;S­iège;ASSISTANT(E) DE DIRECTION;30 BOULEVARD GALLIENI 92130 ISSY LES MOULINEAUX;17;17
    VJYL326;Monsieur;BXXXXX;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE MISSION;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48
    $ 
    $ cat jour
    VJYL326;Monsieur;BXXXXX;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE PROJET MOA;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48
    $ 
    $ cat jour ref | awk -F";" '{if(x[$1]!=$1)print $0;x[$1]=$1}'|sort
    Matricule;Civilité;Nom;Prénom;DateEmbauche;DateDepart;Statut;Affectation;Activite;­Observation;Direction;Departement
    VEDX314;Mademoiselle;KWWWWW;Anne-Christine;07/12/2009;;CDD;S­iège;ASSISTANT(E) DE DIRECTION;30 BOULEVARD GALLIENI 92130 ISSY LES MOULINEAUX;17;17
    VJYL326;Monsieur;BXXXXX;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE PROJET MOA;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48
    $ 
    
    0
  2. Joker
     
    Merci pour ta rapide réponse.

    donc si j'ai compris, il faudrais que je supprime les lignes dans mon fichier référence qui ont un matricule en commun dans le fcihier du jour.
    comment dois-je faire pour récupere juste le matricule du fichier du jour pour faire une recherche dans le fichier référence pour supprimer la ligne correspondante ? (relier mon matricule à la variable $1)
    comme ça ensuite j'applique la ligne de commande comme ci-dessus :
    cat jour ref | awk -F";" '{if(x[$1]!=$1)print $0;x[$1]=$1}'|sort

    Merci encore !
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      c'est le awk qui fait tout cela, ce qui compte c'est l'ordre dans lequel les fichiers sont traités: cat jour ref

      if(x[$1]!=$1)print $0 : si x[matricule] != matricule, on l'imprime, si on traite ref, x[matrcule] existe donc on n'imprimne pas
      x[$1]=$1 : on stocke ce matricule x[matricule]=matricule
      0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    on peut aussi faire:
    on stocke chaque ligne dans x indexé avec matricule, le fichier jour venant, cette fois après ref
    $ cat  ref jour | awk -F";" '{x[$1]=$0} ; END{for( n in x)print x[n]}' 
    Matricule;Civilité;Nom;Prénom;DateEmbauche;DateDepart;Statut;Affectation;Activite;­Observation;Direction;Departement
    VJYL326;Monsieur;BXXXXX;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE PROJET MOA;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48
    VEDX314;Mademoiselle;KWWWWW;Anne-Christine;07/12/2009;;CDD;S­iège;ASSISTANT(E) DE DIRECTION;30 BOULEVARD GALLIENI 92130 ISSY LES MOULINEAUX;17;17
    $ 
    0
  4. Joker
     
    Bon j'ai fait différent test et je n'arrive pas à avoir le résultat attendu.

    En faite pour pouvoir arrivée à mon résultat il faudrai que je le tri uniquement sur mon fichier final ou j'ai :

    Matricule;Civilité;Nom ;Prénom;DateEmbauche;DateDepart;Statut;Affectation;Activite;Observation;Direction;Departement
    VJYD502;Mademoiselle;Nxx xxxx;Sylvie;01/10/2008;;Titulaire;Siège;CONSEILLER SUPPORT UTILISATEUR COMPTABLE;30 BOULEVARD GALLIENI 92130 ISSY LES MOULINEAUX;7;63
    VJYL326;Monsieur;Byyyyy;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE MISSION;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48VJYL326;Monsieur;Byyyyy;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE PROJET MOA;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48
    VJYP058;Monsieur;Faaaaa;Matteo;01/03/2008;;Titulaire;Siège;EXPERT ORGANISATION;17 AVENUE DE CHOISY 75643 PARIS CEDEX 13;18;128VJYP058;Monsieur;Faaaaa;Matteo;01/03/2008;;CDD;Siège;EXPERT ORGANISATION;17 AVENUE DE CHOISY 75643 PARIS CEDEX 13;18;128

    ce que je souhaite c'est enlever les lignes en gras sur ce même fichier car si je fais comme expliqué plus haut
    j'enlève aussi des lignes que je dois prendre.

    est-ce que quelqu'un c'est comment faire ?

    Merci.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    ca ?
    $ cat ref
    Matricule;Civilité;Nom;Prénom;DateEmbauche;DateDepart;Statut;Affectation;Activite;Observation;Direction;Departement
    VJYD502;Mademoiselle;Nxx xxxx;Sylvie;01/10/2008;;Titulaire;Siège;CONSEILLER SUPPORT UTILISATEUR COMPTABLE;30 BOULEVARD GALLIENI 92130 ISSY LES MOULINEAUX;7;63
    VJYL326;Monsieur;Byyyyy;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE PROJET MOA;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48
    VJYP058;Monsieur;Faaaaa;Matteo;01/03/2008;;CDD;Siège;EXPERT ORGANISATION;17 AVENUE DE CHOISY 75643 PARIS CEDEX 13;18;128
    $ 
    $ cat jour
    VJYL326;Monsieur;Byyyyy;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE MISSION;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48
    VJYP058;Monsieur;Faaaaa;Matteo;01/03/2008;;Titulaire;Siège;EXPERT ORGANISATION;17 AVENUE DE CHOISY 75643 PARIS CEDEX 13;18;128
    $ 
    $ cat  jour ref | awk -F";" '{x[$1]=$0} ; END{for( n in x)print x[n]}'
    Matricule;Civilité;Nom;Prénom;DateEmbauche;DateDepart;Statut;Affectation;Activite;­Observation;Direction;Departement
    VJYL326;Monsieur;Byyyyy;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE PROJET MOA;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48
    VJYD502;Mademoiselle;Nxx xxxx;Sylvie;01/10/2008;;Titulaire;Siège;CONSEILLER SUPPORT UTILISATEUR COMPTABLE;30 BOULEVARD GALLIENI 92130 ISSY LES MOULINEAUX;7;63
    VJYP058;Monsieur;Faaaaa;Matteo;01/03/2008;;CDD;Siège;EXPERT ORGANISATION;17 AVENUE DE CHOISY 75643 PARIS CEDEX 13;18;128
    $ 
    0
  7. Joker
     
    Yes !!!

    ça fonctionne presque seul soucis j'ai mon entête de fcihiers qui se retrouve au milieu du fichier et je vois pas pourquoi ??

    VJYL469;Mademoiselle;Lc ccc;Gwendoline;01/09/2006;;Titulaire;Siège;CHARGEE DE COMMUNICATION;34 RUE DE LA FEDERATION 75015 PARIS;8;68
    VJYL326;Monsieur;Byyyyy;Xavier;02/02/2009;;Titulaire;Siège;CHEF DE PROJET MOA;62 RUE CAMILLE DESMOULINS 92130 ISSY LES MOULINEAUX;4;48
    VJYP058;Monsieur;Faaaaa;Matteo;01/03/2008;;Titulaire;Siège;EXPERT ORGANISATION;17 AVENUE DE CHOISY 75643 PARIS CEDEX 13;18;128
    VOTH094;Monsieur;AHhhhh;Moëz;01/09/2009;;Titulaire;Siège;CHEF DE PROJET MOA;30 BOULEVARD GALLIENI 92130 ISSY LES MOULINEAUX;22;22
    Matricule;Civilité;Nom ;Prénom;DateEmbauche;DateDepart;Statut;Affectation;Activite;Observation;Direction;Departement
    VJYP148;Mademoiselle;Lxxxxx;Audrey;14/04/2009;;Titulaire;Siège;ZREPRI;30 BOULEVARD GALLIENI 92130 ISSY LES MOULINEAUX;7;67
    VEDX314;Mademoiselle;Kddddd;Anne-Christine;07/12/2009;;CDD;Siège;ASSISTANT(E) DE DIRECTION;30 BOULEVARD GALLIENI 92130 ISSY LES MOULINEAUX;17;17

    Merci encore pour ton aide.
    0
  8. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    parce que en indexant sur $1 (matricule), l'ordre change, tu peux faire
    cat jour ref | awk -F";" '/Matricule/ {print $0;next} ; {x[$1]=$0} ; END{for( n in x)print x[n]}'

    soit, si tous les matrcules commencent par V
    cat jour ref | awk -F";" '{x[$1]=$0} ; END{for( n in x)print x[n]}' ¦ sort
    0
  9. Joker
     
    ca y est ça fonctionne !!! j'ai du régler quelques problèmes en amont mais j'ai réussis grace à ton aide.

    Merci encore !!!
    0