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

Shell et commandes GNU Discussion :

suppression de ^@ dans un fichier texte


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut suppression de ^@ dans un fichier texte
    Bonjour,

    J'ai un fichier texte qui se termine pour chaque ligne par ^@.
    Je voudrais supprimer ce caratère avec sed.

    Comment faire ?

    Merci.

  2. #2
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    Tu peux faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e "s/^@$//" tonfichier > resfichier

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Cela ne marche pas. Merci quand même

    Je n'ai trouvé que cela comme solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read ligne
    do
        echo $ligne >> toto
    done < titi
    Mais je pense que l'on peut faire mieux avec sed.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    la fameuse sequence de caractere ^@, est tu certain que c'est bien celle-ci ?
    d'ou provient ton fichier ? (je pense a un fichier provenant d'un machine windows).

    verifier le code de ce(s) caractere a l'aide de l'utilitaire od.
    (od -x mon fichier) ou option -c.
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  5. #5
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    Attention : Il te faut remplacer les caractères ^@ par la séquence
    d'echappement correspondante comme te l'indique MarcG.

  6. #6
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Ça ne m'étonnerait pas que ce fichier ait été généré par un programme en C.
    Le caractère ^@ correspond au caractère nul (du moins sous vi/vim).

    Pour le supprimer, le plus simple est déjà de ne pas le générer, donc corriger le programme si possible.

    avec sed tu peux peut-être essayer la regexp "s/\000//".
    Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.

  7. #7
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par lulu70
    Bonjour,

    J'ai un fichier texte qui se termine pour chaque ligne par ^@.
    Je voudrais supprimer ce caratère avec sed.

    Comment faire ?

    Merci.

    Je pense que la commande la plus adéquate et :

    tr -d '\0' < infile > outfile



    http://pwet.fr/man/linux/commandes/tr

    DESCRIPTION
    Traduire, compresser et/ou éliminer des caractères de l'entrée standard, par écriture sur la sortie standard.
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci à tout le monde pour les réponses.
    Seul le tr fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Suppression doublons dans un fichier texte de plus de 1 Go
    Par zouzoukha dans le forum WinDev
    Réponses: 47
    Dernier message: 25/07/2012, 08h19
  2. Suppression blocs dans un fichier texte
    Par julie20 dans le forum C
    Réponses: 1
    Dernier message: 17/10/2007, 12h23
  3. suppression dans un fichier texte
    Par zchallal dans le forum C
    Réponses: 2
    Dernier message: 01/05/2006, 20h43
  4. Suppression de lignes dans un fichier texte
    Par Isa31 dans le forum Langage
    Réponses: 16
    Dernier message: 26/01/2006, 20h07

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