Scripte eclatement de fichier

Résolu
bouna -  
 bouna -
Bonjour,

je reçois des fichiers sous la forme suivante:
cat Fich
000000000000000000000001CH500343242205........
000000000000000000000001CA543242205062........
000000000000000000000001OL543242205062........
000000000000000000000002CH500343242205........
000000000000000000000002CA543242205062........
000000000000000000000002OL543242205062........
000000000000000000000003CH500343242205........
000000000000000000000003CA543242205062........
000000000000000000000003OL543242205062........
........
........
je souhaite avoir 3 fichires (fich1,fich2 et fich3)
fich1: composer que des lignes CH
fich2: composer que des lignes CA
fich3: composer que des lignes OL

3 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Bonjour,

    S'il vous plaît
    Merci
    Au revoir
    etc.
    Sont monnaie courante quand on veut obtenir quelque chose !

    Saine lecture...
    A voir aussi

    Merci de votre compréhension.

    ;-)
    0
    1. bouna
       
      Bonjour zipe31,
      je ne vois pas de probleme, je cherche de l'aide.
      ou dite moi que j'ai pas droit d'acceder sur ce forum?
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Re-

      Pas de problème si ce n'est qu'un peu de politesse ne fait pas de mal ;-\

      Sinon pour ton problème :

      $ cat plop
      000000000000000000000001CH500343242205........
      000000000000000000000001CA543242205062........
      000000000000000000000001OL543242205062........
      000000000000000000000002CH500343242205........
      000000000000000000000002CA543242205062........
      000000000000000000000002OL543242205062........
      000000000000000000000003CH500343242205........
      000000000000000000000003CA543242205062........
      000000000000000000000003OL543242205062........
      
      $ cat script.sed
      #n
      /CH/{
      w fich1
      }
      /CA/{
      w fich2
      }
      /OL/{
      w fich3
      }
      
      $ ls
      plop  script.sed
      
      $ sed -f script.sed plop
      
      $ ls
      fich1  fich2  fich3  plop  script.sed
      
      $ cat fich1
      000000000000000000000001CH500343242205........
      000000000000000000000002CH500343242205........
      000000000000000000000003CH500343242205........
      
      $ cat fich2
      000000000000000000000001CA543242205062........
      000000000000000000000002CA543242205062........
      000000000000000000000003CA543242205062........
      
      $ cat fich3
      000000000000000000000001OL543242205062........
      000000000000000000000002OL543242205062........
      000000000000000000000003OL543242205062........
      
      $

      ;-))
      0
    3. bouna
       
      Bonjour zipe31,

      j'ai eu testé le scripte avec succes.
      je devrais dire merci ou plutot avoir le plaisir de te rencontre!
      bon ... les deux a la fois.
      VIVE...... "commentcamarche.net"
      0
    4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      De rien ;-))
      0
    5. bouna
       
      Desolé de revenir sur ce point:
      fich1 est bien par compte fich2 et fich3 reprendent le contenu plop
      0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Avec grep ;-)
    grep CH Fich >fic1;grep CA Fich >fic2;grep OL Fich >fic3

    GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
    106485010510997108
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      Aussi ;-))

      Idem avec awk, perl ou sed ;-))
      0
    2. bouna
       
      je crois voir le pb!
      Mon fichier plop est long 873 caractères et contient 491 enregistrements.
      de ce faite les "CH","CA" et "OL" apparaissent plusieurs fois sur la meme ligne.
      Comment faire pourque le recherche se limite sur les 26 premieres caracteres de la ligne?
      0
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Non la longueur et le nombre d'enregistrements n'en sont pas la cause, ni la répétition sur une même ligne du motif à rechercher.

      Néanmoins, pour éviter qu'un motif se trouvant ailleurs que dans les 26 premiers caractères ne soit pris en compte, tu peux utiliser la regex suivante :

      /[0-9]\+CA[0-9]\+/

      Ce qui ne tiendra compte que des motifs précédés ou suivis d'un ou plusieurs chiffre(s).
      0
  3. bouna
     
    Bonjour,

    j'ai oublie de vous dire que je travail sous windows mais j'ai installé le logiciel mks.
    est ce qu'il peut etre l'origine du pb?
    0
    1. bouna
       
      je viens de voire le pb....
      Dans le fichier plop à la ligne 11, le CH figure deux fois.
      ce qui fait que dans je teste avec un grand fichier le resultat attendu n'est pas bon.
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      mais j'ai installé le logiciel mks. est ce qu'il peut etre l'origine du pb?
      C'est fort possible ;-((
      0
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Dans le fichier plop à la ligne 11, le CH figure deux fois.
      Non ce n'est pas gênant, sauf si "CHEIK" (ou autre nom comportant CH) se retrouve sur la même ligne que un CA par exemple ;-(

      Mais bon il suffit d'adapter la regex pour palier à ce petit désagrément ;-)
      0