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 :

Caractère ^M sur chaque ligne de mon fichier de sortie


Sujet :

Linux

  1. #1
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut Caractère ^M sur chaque ligne de mon fichier de sortie
    Bonjour à tous,
    Une drole de chose se passe quand j'execute une requete sql sur une base oracle à l'aide d'un script. Sur mon fichier de sortie contenant le résultat de la requete, le caractère ^M apparait en gras a la fin de chaque ligne, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    fichier_de_sortie :
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    champ1;champ2;champ3^M
    etc
    Pourquoi ce caractère apparait et comment faire pour le supprimer ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Tu ne l'as pas modifié via un éditeur de texte genre bloc-note ? J'ai eu la même chose c'est juste le fait que tu as effectué un saut de ligne supprime les ^M ils n'affecteront pas ton travail voila j'éspére t'avoir un peu aidé

  3. #3
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    attention le ^m s'obtient par la frappe de ENTER après avoir fait crontrol+V attention

    d'autre part il peut être éviter en ne se trompant pas de mode en FTP entre ascii et binary d'avoir des caractère ^m dans les fichiers !

  4. #4
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Il existe une astuce pour supprimer ces ^M avec vi ou vim. Il faut procéder comme suit:
    une fois le fichier ouvert, tapez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :%s/<ctrl-v><entrée>//g
    Je n'ai pas testé. D'ailleurs, je vais le faire car c'est assez utile.

    ++
    .Olivier

  5. #5
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    il me semble que si tu fais
    tu obtiens un fichier propre.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  6. #6
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    col -b protège des réécriture du type backspaces

  7. #7
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Merci à tous de vous pencher sur mon cas. Je l'ai pas modifié du tout, c'est un fichier qui est créé automatiquement par un script pour contenir le résultat d'un requete. Mais je viens de remarquer que c'est lorsque je l'ouvre avec ci que j'obtiens ce caractère. Si je fais un cat mon_fichier, il n'apparait pas. Mais moi je veux le supprimer quand j'utilise vi.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  8. #8
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    J'ai essayé l'astuce :
    et ca marche nickel, merci beaucoup hihi .
    Mais une question quand, comment ca se fait qu'il est apparu ce caractère ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  9. #9
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Bon par contre j'ai un fichier qui fait presque 2 millions de lignes, il m'a falu 30min pour virer les ^M. Il existe pas un moyen pour qu'ils ne s'affichent pas ?
    je vous le code du script qui génère le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #!/bin/ksh
    echo demarrage
    export ORACLE_BASE="/exec/products/oracle"
    export ORACLE_HOME="/exec/products/oracle/v9.2.0"
    export ORACLE_SID="PKRM01"
    export PATH="$PATH:/exec/products/oracle/v9.2.0/bin"
    uid="user";
    password="mdp";
    schema="nom_schema";
    schema1="nom_schema";
    echo "\
    set pagesize 0
    set linesize 3000
    set trimout on
    ma requete;"|${ORACLE_HOME}/bin/sqlplus -s "$uid"/"$password" >> resultat_extraction_offre_voip.txt;
    Vous voyez quelquechose qui cloche ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  10. #10
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    parce que ton soft gère pas bien la requête et interprète comme caractère le retour charriot comme un caractère de contrôle et non un caractère-non-imprimable. ce qui explique aussi pourquoi il est visible dans un éditeur mais pas dans le shell

    comme le ^G qui sert à éjecter les feuilles des printers.

  11. #11
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    donc je peux rien y faire ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  12. #12
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 149
    Points : 28 116
    Points
    28 116
    Par défaut
    Citation Envoyé par griese
    J'ai essayé l'astuce :
    et ca marche nickel, merci beaucoup hihi .
    Si tu veux le faire sans ouvrir le fichier, tu peux le faire avec sed ou perl. l'avantage de perl est qu'il travaille directement sur le ficheir, alros que tu dois rediriger la sortie de sed dans un autre fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -e 's/^m//g' mon_fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^m//g' mon_fichier > mon_fichier_sans_les_M
    [Edit] Là aussi, le ^m s'obtient en tapant <ctrl>V puis <entrée>


    Citation Envoyé par griese
    Mais une question quand, comment ca se fait qu'il est apparu ce caractère ?
    Il s'agit de différences entre Windows et *n*x (Unix, Linux, ...) sur le caractère exprimant la fin de ligne : sous Unix, un seul caractère suffit, alors que Windows en utilise 2. Donc si tu édites un fichier Linux sous Windows, il va te rajouter les ^m manquant.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  13. #13
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -ie 's,\r,,' file.txt
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  14. #14
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Citation Envoyé par gangsoleil
    Il s'agit de différences entre Windows et *n*x (Unix, Linux, ...) sur le caractère exprimant la fin de ligne : sous Unix, un seul caractère suffit, alors que Windows en utilise 2. Donc si tu édites un fichier Linux sous Windows, il va te rajouter les ^m manquant.
    D'accord, mais a aucun moment je ne passe de linux à Windows avec ce fichier. Je ne le traite que sous Linux donc il ne devrait pas y avoir ces ^M du coup, non ?
    J'essai la méthose que vous m'avez donné et je vous tiens au courant
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  15. #15
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    J'ai essayé vos deux méthodes et aucunes des deux ne fonctionne. A la fin du traitement, le fichier de sortie contient toujours les ^M
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  16. #16
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Tu ne passes peut-être pas de Linux à Windows mais l'inverse oui. Autrement tu n'aurais pas ce problème. Ceci dit, il existe une autre solution, tu crées une macro vim que tu exécutes lorsque tu rencontres ces ^M.

    ++
    .Olivier

  17. #17
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    et comment on créé une macro ???
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  18. #18
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Pour commencer, quel éditeur utilises-tu ?
    .Olivier

  19. #19
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Bah justement non je ne traite ce fichier que sous linux ! J'excute un script en ksh sur mon serveur linux et je le fichier est stcocké sur le meme serveur linux. Meme ma base Oracle est sur ce meme serveur. Et quand ensuite j'ai voulu importer ce fichier sous Windows, les ^M ont disparus. Mais moi j'en ai besoin sous linux...
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

  20. #20
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    j'utilise vi
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

    http://mosfootball.over-blog.com

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Vérifier que chaque ligne de mon fichier fini par ";"
    Par oliviernouhi dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2011, 16h54
  2. ajouter un ; a la fin de chaque ligne de mon fichier CSV
    Par pelois dans le forum Conception
    Réponses: 1
    Dernier message: 21/06/2010, 09h24
  3. Hint sur chaque ligne d'un DBgrid
    Par Papino dans le forum Bases de données
    Réponses: 8
    Dernier message: 23/08/2006, 14h36
  4. Réponses: 5
    Dernier message: 28/07/2006, 08h16
  5. [vb.net][dataView] test sur chaque lignes
    Par arnolem dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/02/2006, 10h52

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