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



A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
De rien ;-))
0
bouna
 
Desolé de revenir sur ce point:
fich1 est bien par compte fich2 et fich3 reprendent le contenu plop
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

Aussi ;-))

Idem avec awk, perl ou sed ;-))
0
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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
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
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
mais j'ai installé le logiciel mks. est ce qu'il peut etre l'origine du pb?
C'est fort possible ;-((
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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