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 :

Modifier un caractère sur une colonne d'un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    DIE
    DIE est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Par défaut Modifier un caractère sur une colonne d'un fichier
    Bonjour à tous,
    Me revoici avec une nouvelle question


    J'ai '8' en colonne 577 et je veux remplacer '8' par '9' dans tout le fichier sur cette colonne

    En cherchant j'ai trouvé ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^\(.\{*576*\}\).\{1\}\(.*\)/\1*9*\2/' fichier > newfichier
    Le code sed ci dessus fonctionne bien mais uniquement si les lignes de mon fichier font au moins 577 de longueur... Or j'ai des lignes moins longue et dans ce cas ça plante
    Je souhaiterai que les lignes qui ne correspondent pas soit quand même inscrite dans le nouveau fichier.

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    Conditionner l'éxécution du remplacement au nombre de caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed  '/.\{577\}/s/^\(.\{576\}\).\{1\}\(.*\)/\1*9*\2/' fichier > newfichier
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    DIE
    DIE est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Par défaut
    merci de ta réponse

    je viens de tester mais ça ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed  '/.\{577\}/s/^\(.\{576\}\).\{1\}\(.*\)/\1*9*\2/' fichier > newfichier

    sed: 0602-404 Function /.\{577\}/s/^\(.\{576\}\).\{1\}\(.*\)/\1*9*\2/ cannot be parsed.

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    Si ce n'est pas déjà fait (apparemment ça ne l'est pas), et si tu en as l'autorisation, installe GNU sed.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Par défaut
    Essaie avec l'option -r.
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

Discussions similaires

  1. modifier le curseur sur une colonne de stringgrid ?
    Par messahel dans le forum Composants VCL
    Réponses: 5
    Dernier message: 22/11/2011, 12h22
  2. [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, 14h48
  3. Réponses: 6
    Dernier message: 18/10/2009, 08h28
  4. Réponses: 1
    Dernier message: 01/07/2009, 20h12
  5. Réponses: 2
    Dernier message: 31/08/2006, 09h57

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