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 :

Remlacer une colonne d'un fichier texte


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut Remlacer une colonne d'un fichier texte
    Salut,

    Je cherche à modifier le contenu d'un fichier.

    Le format du fichier est assez spécial (format Tocar pour ceux qui connaissent).

    Les champs ne sont pas séparés par des virgules, mais chaque colonne a un nombre précis de caractères qui lui sont alloués.

    Par exemple :

    Colonne 1 : début : 0, 3 caractères
    Colonne 2 : début : 3, 10 caractères
    Colonne 3 : début : 13, 7 caractères
    ...

    Moi j'aimerais modifier la colonne à l'emplacement 29, et qui contient 4 caractères.

    J'ai essayé

    sed 's/^(.{28}).{4}(.*)/\11234\2/g'

    les caractères 29 à 32 devraient donc être remplacés par 1234.

    Forcément ça ne fonctionne pas....

    Qui a une idée pour me dépanner ?

    Merci !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    J'arrive en faisant ainsi :

    echo -n $(cut -c1-28 une_ligne.txt)1234$(cut -c33- une_ligne.txt)

    Mais je pense qu'il y a mieux, non ?

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    regarde la doc de awk...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    J'aime bien les RTFM genre "Je connais la réponse, mais j'ai pas envie de te donne une piste"

    Sauf si on considère que "lire la doc" est une piste

    Pour finir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^\(.\{28\}\).\{4\}\(.*\)/\11234\2/' eau_export.txt > eau_final.txt
    fonctionne bien !

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par NeqO55 Voir le message
    J'aime bien les RTFM genre "Je connais la réponse, mais j'ai pas envie de te donne une piste"

    Sauf si on considère que "lire la doc" est une piste
    Je répondais à la question

    Mais je pense qu'il y a mieux, non ?
    Mais quand je dis "lis la doc", c'est parce que je n'ai jamais utilisé moi-même awk mais tout un tas de collègues le font, et je SAIS que c'est l'OUTIL pour séparer des colonnes sous unixoide.

    Donc RTFM...


    Note : je crois que c'est quelque chose comme awk $1 (pour la première colonne).

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Pas de problèmes..

    Sauf que de ce que je connais de AWK, il ne permet que de séparer une string par un caractère de séparation. Et c'est justement ce que je n'ai pas :/

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par NeqO55 Voir le message
    Pas de problèmes..

    Sauf que de ce que je connais de AWK, il ne permet que de séparer une string par un caractère de séparation. Et c'est justement ce que je n'ai pas :/
    OK mais alors tu ne t'exprimes pas correctement :

    Remplacer une colonne d'un fichier texte

  8. #8
    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
    Un lien sur les bases de awk

    http://www.shellunix.com/awk.html

    substr(s,i,n) retourne la sous chaine de s commencant en i et de taille n

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{print substr($0,1,28)"1234"substr($0,33)}' infile

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

Discussions similaires

  1. Extraction d'une colonne d'un fichier texte
    Par KTARIK dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 04/06/2014, 22h19
  2. Réponses: 1
    Dernier message: 16/08/2011, 18h46
  3. [Débutant] extraire un caractère d'une colonne dans un fichier texte
    Par 6iluvatar9 dans le forum MATLAB
    Réponses: 2
    Dernier message: 03/11/2010, 15h48
  4. [Toutes versions] Copier une colonne d'un fichier Excel dans un fichier TEXT.
    Par jerem_orga dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/08/2010, 00h41
  5. Ecrire une colonne dans un fichier texte
    Par neutrino314 dans le forum VBA Access
    Réponses: 3
    Dernier message: 29/09/2009, 09h31

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