Scripte eclatement de fichier

Résolu
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. Contributeur
    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.

    ;-)
    1. 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?
    2. Contributeur
      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........
      
      $

      ;-))
    3. 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"
    4. Contributeur
      De rien ;-))
    5. Desolé de revenir sur ce point:
      fich1 est bien par compte fich2 et fich3 reprendent le contenu plop
  2. Modérateur
    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
    1. Contributeur
      Salut,

      Aussi ;-))

      Idem avec awk, perl ou sed ;-))
    2. 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?
    3. Contributeur
      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).
  3. 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?
    1. 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.
    2. Contributeur
      mais j'ai installé le logiciel mks. est ce qu'il peut etre l'origine du pb?
      C'est fort possible ;-((
    3. Contributeur
      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 ;-)