Scripte eclatement de fichier

Résolu/Fermé
bouna - 11 avril 2011 à 10:32
 bouna - 12 avril 2011 à 13:16
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
11 avril 2011 à 10:38
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
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
11 avril 2011 à 12:07
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
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
11 avril 2011 à 18:02
De rien ;-))
0
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
Modifié par lami20j le 11/04/2011 à 19:14
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
11 avril 2011 à 19:16
Salut,

Aussi ;-))

Idem avec awk, perl ou sed ;-))
0
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
12 avril 2011 à 12:58
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
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
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
Modifié par zipe31 le 12/04/2011 à 12:34
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
12 avril 2011 à 12:36
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