IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Pollution d'un fichier texte par des caractères de contrôle ASCII


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut Pollution d'un fichier texte par des caractères de contrôle ASCII
    Bonjour à tous

    Dans le cadre d'un projet, nous utilisons des exports de notre base de donnée pour les réinjecter dans une autre application

    Hors j'ai un gros problème : le contenu que nous exportons provient de pages de journaux OCRisés (reconnaissance de caractères). Le fait de récupérer le contenu OCRisé stocké dans la base fait apparaître des caractères type EOT, NUL, etc... au beau milieu du texte (cf exemple ci-dessous capture d'écran du notepad). :

    http://zepload.com/images/1246269758_EOF.PNG

    et l'équivalent sous VI (c'est le ^L en bleu foncé, mais c'est parfois ^M, parfois autre chose)

    http://zepload.com/images/1246270467_EOFlinux.PNG

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^ ;; ;ri- ; --^ ir^ -.-HP! ^} npr^uin^nar ont commencé à rape- JU^L LIClMJl
    Lorsque j'indexe ensuite mon fichier XML construit à partir de cette export dans une autre application, l'application pense que le fichier est terminé et s'arrête là (enfin c'est également une supposition, dans tous les cas j'ai établi que l'application ne va pas plus loin dans le fichier XML que la ligne qui contient le caractère "aberrant")

    Auriez-vous une idée pour les supprimer via un script pas trop complexe ? Je n'arrive pas à les rechercher sous VI, donc les supprimer me paraît pour l'instant difficile

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Petit up car j'ai identifié les caractères comme étant des caractères de contrôle ASCII mais je suis toujours coincé pour les supprimer de manière automatique.

  3. #3
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    Sous linux tu peux essayer la commande suivante:
    tr -cd '\11\12\15\140-\176' < le-fichier-pollué > le-fichier-pollué-nettoyé
    Ça va supprimer tous les caractères ASCII non imprimables.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Merci pour ta réponse !

    Mais la commande a eu le résultat suivant

    elle a transformé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    10000000018938326,209490,Presse écrite,2009-02-15 09:46:03,2,Réception,0,Racine,NICE MATIN,618090,\N,Le « vaisseau » Peugeot quitte St-Roch,Le « vaisseau » Peugeot quitte St-Roch restructuration Peugeot Samt-Roch\, c'est fini i Fm mars\, l'imposant bâtiment de 10 000 m2 verra ses 26 employés partir vers d'autres concessionnaires de la marque au Lion Route de Grenoble pour la plupart\, Cagnessur-Mer ou Antibes pour cinq d'entre eux Hier\, la reunion du comite d'entreprise a confirme ce que nous annoncions dans nos colonnes avant-hier la fermeture d'un site devenu\, en dix ans\, emblématique du quartier Saint-Roch « Cognes ' Pour moi c'est Cagnes-sur-^Der ' » Sans enthousiasme\, Christian Gnllo annonce sa nouvelle affectation a ses collègues Ils ont l'air défaits Resignes Certes\, aucun d'entre eux n'est licencie Reste que leur entreprise ferme un site Et celui qui les attend « aura un impact sur leur vie quotidienne »\, dixit leur délègue CGT Clotaire Picard « C'est le drame » « }ons\, on n'y est pour rien ' L'atelier est plein de vehicules vous voyez bien que ça bosse »\, soupire Christian\, 52 ans dont dixhuit passes chez Peugeot Lui habite a deux pas d'ici Son collègue Laurent\, 31 ans\, est pour sa part « effondre » II est transfère a Antibes\, alors qu'il habite route de Grenoble et déjeunait jusqu'ici chez son pere a StRoch « Ça fait des frais de repas\, d'autoroute Et comment vais-je m'occuper de ma fille\, qui rentre a l'école ? C'est le drame » Ventes en berne Directeur central des sites azureens de Peugeot\, Roger Schmitt admet quV une fermeture est toujours traumatisante Maîs on met en place des mesures d'accompagnement La\, on est encore en phase de négociation » La cnse qui secoue l'industrie automobile ? Aux dires de Roger Schmitt\, elle ne serait qu'un element d'explication parmi d'autres « Avec l'amélioration de la qualite de nos voitures\, on a réduit notre activite service après-vente Et un nouveau concessionnaire\, a la Turbie\, a pris une partie de notre territoire En outre\, les travaux du tram nous ont nui et ont change l'habitude des clients » Resultat l'élégant bâtiment de verre est devenu « surdimensionne » 700 ventes par an alors qu'il devrait en faire le double « Ils ont voulu faire une cathedrale\, un vaisseau On a toujours dit que c'était présomptueux »\, reproche le délègue FO Enc D'Oliveira Au final\, pour Chantai Chassenaud (CFDT)\, « ce sont les salaries qui trinquent Pour les reaffecter\, Peugeot a tenu compte des postes\, maîs pas de leurs adresses » CHRISTOPHE CIRONE
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ressecriteceptionacineevaisseaueugeotquittetochevaisseaueugeotquittetochrestructurationeugeotamtochcestfiniimmarslimposantbtimentdemverrasesemployspartirversdautresconcessionnairesdelamarqueauionoutederenoblepourlaplupartagnessurerountibespourcinqdentreeuxierlareunionducomitedentrepriseaconfirmecequenousannoncionsdansnoscolonnesavanthierlafermeturedunsitedevenuendixansemblmatiqueduquartieraintochognesourmoicestagnessureransenthousiasmehristiannlloannoncesanouvelleaffectationasescollgueslsontlairdfaitsesignesertesaucundentreeuxnestlicencieestequeleurentreprisefermeunsitetceluiquilesattendauraunimpactsurleurviequotidiennedixitleurdlguelotaireicardestledrame}onsonnyestpourrienatelierestpleindevehiculesvousvoyezbienqueabossesoupirehristianansdontdixhuitpasseschezeugeotuihabiteadeuxpasdicioncollgueaurentansestpoursaparteffondreesttransfreantibesalorsquilhabiteroutederenobleetdjeunaitjusquicichezsonpereatochafaitdesfraisderepasdautoroutetcommentvaisjemoccuperdemafillequirentrealcoleestledrameentesenberneirecteurcentraldessitesazureensdeeugeotogerchmittadmetquunefermetureesttoujourstraumatisanteasonmetenplacedesmesuresdaccompagnementaonestencoreenphasedengociationacnsequisecouelindustrieautomobileuxdiresdeogerchmittelleneseraitquunelementdexplicationparmidautresveclamliorationdelaqualitedenosvoituresonarduitnotreactiviteserviceaprsventetunnouveauconcessionnairealaurbieaprisunepartiedenotreterritoirenoutrelestravauxdutramnousontnuietontchangelhabitudedesclientsesultatllgantbtimentdeverreestdevenusurdimensionneventesparanalorsquildevraitenfaireledoublelsontvoulufaireunecathedraleunvaisseaunatoujoursditquectaitprsomptueuxreprocheledlguencliveiraufinalpourhantaihassenaudcesontlessalariesquitrinquentourlesreaffectereugeotatenucomptedespostesmaspasdeleursadresses
    (suppression de tout caractère sauf les minuscules)

    Bon je vais voir si j'arrive à adapter ton code

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    j'ai utilisé ça :

    tr -d '[:cntrl:]' < fichier pollué > fichier pollué nettoyé
    (pour les caractères de contrôle)

    et ça a l'air de fonctionner !

    je vais vérifier quand même que l'intégrité de mes données est bien conservée, mais ça m'a l'air bien parti

  6. #6
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    Essaye comme ça:
    tr -cd '\11\12\15\40-\176' < le-fichier-pollué > le-fichier-pollué-nettoyé
    Un 1 s'était glissé dans mon post. En fait, on dit de supprimer tous les caractères à l'exception des valeures octal 11 (tab), 12 (lf), 15 (cr) et tout ce qui se trouve entre 40 et 176, autrement dit tout ce qui est imprimable.

Discussions similaires

  1. Créer un fichier texte contenant des ; sans les " imposés par Excel
    Par man_coef dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/12/2012, 21h22
  2. Réponses: 3
    Dernier message: 09/12/2011, 15h34
  3. Délimitation d'un fichier texte par nombre de caractères
    Par kira_safi dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 04/08/2010, 11h43
  4. Charger un fichier texte contenant des caractères
    Par dm_manu dans le forum MATLAB
    Réponses: 5
    Dernier message: 24/12/2006, 02h37
  5. [XSLT] Remplacer par des caractères spéciaux
    Par OXyGN dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 29/07/2005, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo