Quitter le forum et retourner au site

[RÉSOLU] Manipulation de texte

Venez nous en parler, c'est ici que l'on vous conseillera !
Avatar de l’utilisateur
renaud
Messages : 119
Inscription : mer. 11 juin 2008, 11:06
Distribution : Ubuntu & Debian
Niveau : Padawan ad vitam aeternam
Localisation : ILLZACH
Contact :

[RÉSOLU] Manipulation de texte

Message par renaud »

Salut,

j'ai un problème à résoudre pour lequel je ne maîtrise pas encore les outils.

Je voudrais transformer un fichier texte du genre :

Code : Tout sélectionner

CODE9CHIF MLLYYYYYYYYYYYYY  XXXXXXX             XXXXXXX             NNNNNNNNCOP       ACTIVITE  0680093GCIO  THANN                                                         BBB.0                                                                                  STRASBOURGT                                         15   
CODE9CHIF MLLYYYYYYYYY      XXXXXXXXX           XXXXXXXXX           NNNNNNNNCOP       ACTIVITE  0681639MCIO MULHOUSE II MULHOUSE                                           BBB.0                                                                                  STRASBOURGT                                         15   
CODE9CHIF MLLYYYYYY         XXXXXXXXX           XXXXXXXXX           NNNNNNNNCOP       ACTIVITE  067014ZJZONE DE REMPLACEMENT ZR Bas-Rhin (Zone Departen                    BBB.0                                                                                  STRASBOURGT                                         15   
CODE9CHIF MLLYYYYYYYYYYYYYYYXXXXXXXXXXX         XXXXXXXXXXX         NNNNNNNNCOP       ACTIVITE  0670138LCIO  SAVERNE                                                       BBB.0                                                                                  STRASBOURGT                                         15   
CODE9CHIF MLLYYYYYY         XXXXXXXX            XXXXXXXX            NNNNNNNNCOP       ACTIVITE  0681639MCIO MULHOUSE II MULHOUSE                                           BBB.0                                                                                  STRASBOURGT                                         15   
(Sans le line wrap, ça donne des colonnes alignées grâce aux espaces qui séparent les mots)

en quelque chose comme ça :

Code : Tout sélectionner

CODE9CHIF;MLLYYYYYYYYYYYYY;XXXXXXX;XXXXXXX;NNNNNNNNCOP;ACTIVITE;0680093GCIO;THANN;BBB.0;STRASBOURGT;15;
CODE9CHIF;MLLYYYYYYYYY;XXXXXXXXX;XXXXXXXXX;NNNNNNNNCOP;ACTIVITE;0681639MCIO;MULHOUSE;II;MULHOUSE;BBB.0;STRASBOURGT;15;
CODE9CHIF;MLLYYYYYY;XXXXXXXXX;XXXXXXXXX;NNNNNNNNCOP;ACTIVITE;067014ZJZONE;DE;REMPLACEMENT;ZR;Bas-Rhin;(Zone;Departen;BBB.0;STRASBOURGT;15;
CODE9CHIF;MLLYYYYYYYYYYYYYYY;XXXXXXXXXXX;XXXXXXXXXXX;NNNNNNNNCOP;ACTIVITE;0670138LCIO;SAVERNE;BBB.0;STRASBOURGT;15;
CODE9CHIF;MLLYYYYYY;XXXXXXXX;XXXXXXXX;NNNNNNNNCOP;ACTIVITE;0681639MCIO;MULHOUSE;II;MULHOUSE;BBB.0;STRASBOURGT;15;
Bon, je suis en train d'apprendre Python (je suis au début du début :oops: ) mais peut-être savoir fabriquer une bombe nucléaire est inutile quand on peut se servir d'une tapette à mouches ...

Quel outil me conseillez-vous pour insérer un caractère (un ; en l'occurrence) à la colonne tant de chaque ligne ?
Après, il faut, je pense, supprimer les chaînes de caractères de plus de un espace.

Je me suis laissé dire que sed était peut-être la solution ...

Merci des pistes que vous voudrez bien me fournir.
Renaud

=-=-=-=-=
No RTFM please ! I am reading that f..... LONG manual !
Dernière modification par renaud le ven. 16 janv. 2009, 12:21, modifié 2 fois.
Avatar de l’utilisateur
Onc_hansi
Messages : 14
Inscription : dim. 01 juin 2008, 15:17
Distribution : ubuntu
Niveau : initie
Localisation : bollwiller
Contact :

Re: Manipulation de texte

Message par Onc_hansi »

après plusieurs essais test ça peu être.
sed -e 's/ */;/g' tontexte.txt > tontexte2.txt (2 espaces avant *)

http://www.student.northpark.edu/pement ... edfaq.html
http://philippe.lawrence.free.fr/howto_linux.html
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
Messages : 719
Inscription : lun. 26 mai 2008, 21:05
Distribution : Debian, Ubuntu
Niveau : Moitié plein !
Localisation : Guebwiller

Re: Manipulation de texte

Message par le Manchot Masqué »

Script myButcherIsAnArtist.php :

Code : Tout sélectionner

#!/usr/bin/php
<?php
# Author : Jean Luc Biellmann - 2009
$in = @fopen("monfichier.dat","rb") or die("Alert : user bug !\n");
do {
        foreach (array(10,18,20,20,18,10,13,62,87,52,5,0) as $l)
                print ($l ? trim(fread($in,$l)).";" : "\n");
        fread($in,1);
} while (!feof($in));
fclose($in);
?>
Je dois avouer que ce n'est pas un script super propre, mais dans le cas de ton application ponctuelle ou tu es sense maitrise la longueur de tes champs, ca suffit amplement...
Avatar de l’utilisateur
renaud
Messages : 119
Inscription : mer. 11 juin 2008, 11:06
Distribution : Ubuntu & Debian
Niveau : Padawan ad vitam aeternam
Localisation : ILLZACH
Contact :

Re: Manipulation de texte

Message par renaud »

Un grand :) merci :) à nos deux tuteurs !

La solution du Manchot Masqué fonctionne au poil.
Je précise qu'il faut tout de même, pour pouvoir exécuter ce script dans un terminal, avoir installé le paquet php-cli (command line interface ?) et lancer le script grâce à la commande :

Code : Tout sélectionner

php -q script.php
ou

Code : Tout sélectionner

php -q script.php > fichier.csv
pour récupérer le tout dans un nouveau fichier.

Renaud
Répondre