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 :

Remplacement de chaîne de caractères automatique dans un groupe de fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 31
    Points : 28
    Points
    28
    Par défaut Remplacement de chaîne de caractères automatique dans un groupe de fichiers
    Bonjour à tous,

    J'ai une question très simple mais qui me pose problème. Je dispose dans un dossier d'une quarantaine de fichiers, dans lesquels je voudrais remplacer la chaine "NaN" par "0.00". Je travaille sous gvim et je sais qu'il possible de remplacer des éléments avec la commande Mon problème est que je voudrais le faire d'un seul coup pour tous les fichiers (sans avoir à les ouvrir un à un).

    Pourriez-vous me dire comment procéder ? Quelles commandes et syntaxes utiliser ?

    Merci d'avance de votre réponse,
    Bonne soirée,
    Nicolas823

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    Bonjour,

    Citation Envoyé par nicolas823
    Je travaille sous gvim
    et quand tu bricoles, tu travailles sous marteau ?

    vim n'est pas le meilleur outil pour travailler sur plusieurs fichiers (bein que ce soit sûrement possible), utilise plutôt sed.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour,

    pour exécuter une commande externe sous vim, on tape ':' puis '!' puis la commande du shell comme si on était dans le shell.

    Les outils de manipulation de fichiers texte de manière industrielle sont:
    • grep (filtrage)
    • sed (filtrage, modification, et autres choses bêtes et efficaces)
    • awk (filtrage, modification, arithmétique, fichiers à "champs" genre *.csv, etc)


    Cela donnera donc au final sous gvim, pour tous les fichiers d'extension txt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :! sed -i 's/avant/après/g' *.txt
    Attention à la modification des fichiers en cours dans gvim
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    vim peut faire des remplacements dans tout un fichier (pas besoin d'appeler sed pour ça); par contre pour le faire sur les fichiers d'un répertoire, il vaut mieux sortir de vim, et ouvrir une console.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    par contre pour le faire sur les fichiers d'un répertoire, il vaut mieux sortir de vim, et ouvrir une console.
    Ben non. C'est justement la raison d'être de mon message. C'est pas la peine de sortir de vim.
    Par contre, pour gvim, je ne sais pas. Je n'ai même pas gvim installé.

    Est-ce toi qui a mis le pouce vers le bas?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    Est-ce toi qui a mis le pouce vers le bas?
    oui, c'est moi, parce que je crois qu'il ne faut pas encourager nicolas823 à utiliser (g)vim pour ça.
    à mon avis, il a ouvert gvim (un éditeur de fichier) pour voir comment faire la modification sur un fichier d'abord, puis, nous demande comment le refaire sur plusieurs fichiers.

    nous savons que la modification de fichiers en masse est plus aisée avec sed.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Bonjour,

    Juste pour répondre comment modifier plusieurs fichiers du répertoire courant sous (g)vim:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    :args ./*.txt
    :argdo s/avant/apres/g | w
    Mais là, il faut être sûr de ce que l'on fait car on enregistre les modifications.
    Cordialement.

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/03/2014, 17h20
  2. [MySQL] Remplacer une chaîne de caractères dans une base de données
    Par Furius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/11/2013, 21h06
  3. Remplacer une chaîne de caractère dans un gros fichier
    Par dosilbr dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 06/03/2007, 13h38
  4. Réponses: 8
    Dernier message: 15/07/2006, 18h59
  5. Remplacer une chaîne de caractères dans une base
    Par Furius dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/10/2005, 23h03

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