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 :

Besoin d'aide : commande shell


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Par défaut Besoin d'aide : commande shell
    Bonjour,

    je fais un script qui rajoute un caractere à la fin de toutes les lignes de mon fichier,
    la ligne de commande que j'ai utilisé est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/sh
    grep "^aaaa" fichier.txt | sed -e "s/$/FFFRz/" >fichier.tx
    le probleme c'est qu'il crée un nouveau fichier quand j'execute, il ne modifie pas dans "mon fichier".
    can you help me please??

    thanks

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Bonjour,

    En passant par des tubes anonymes ( les '|' ), il est difficile de modifier directement le fichier d'entrée (j'ai bien dit difficile, pas impossible), il faut donc éviter, ne serait-ce pour éviter par exemple les boucles infernales.
    heureusement dans ton cas, on peut traiter le grep + le sed en une seule commande sed, puis utiliser l'option -i pour modifier directement le fichier, donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e '/^aaaa/s/$/FFFRz/g' fichier.txt
    Ici, cela s'affichera tout ton fichier sur ta sortie standard en ne modifiant que les lignes qui commence par "aaaa", si c'est cela fonctionne comme tu veux, il suffira de rajouter l'option -i avant l'option -e.

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Par défaut merci pour l'aide
    merci, mais malheureusement ça ne marche pas, il efface tout le contenu de mon fichier;

    je préfère donc garder le Grep, j'ai essayé le -i, mais je crois que je l'ai mal ecrit la commande.

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Bizarre, chez moi, cela fonctionne:
    sans l'option -i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ cat plop
    aaaa tototo
    aaad xototo
    aqaa xototo
    aaaaxototo
     aaaaxototo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ sed -e '/^aaaa/s/$/FFFRz/g' plop
    aaaa tototoFFFRz
    aaad xototo
    aqaa xototo
    aaaaxototoFFFRz
     aaaaxototo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ cat plop
    aaaa tototo
    aaad xototo
    aqaa xototo
    aaaaxototo
     aaaaxototo
    avec l'option -i:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ sed -i -e '/^aaaa/s/$/FFFRz/g' plop
    $ cat plop
    aaaa tototoFFFRz
    aaad xototo
    aqaa xototo
    aaaaxototoFFFRz
     aaaaxototo

  5. #5
    Invité
    Invité(e)
    Par défaut
    Essaye ceci mais ça gardera toute les autres lignes de ton fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^aaaa\(.*\)$/aaaa\1FFFRz/' fichier.txt
    Il faut bien garder uniquement les lignes commençant par aaaa?

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Voici la même façon de faire que Beginner.j mais en simplifiant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ sed 's/^aaaa.*/&FFFRz/' plop
    Après selon la documentation sed, la méthode la plus rapide est la première que je t'avais indiqué et je la trouve personnellement plus lisible

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Par défaut MERCCCCCCI
    ça marchhhhhhe maintenant, Merci bcp bcp, justement je ne veux pas supprimer les autres lignes,
    MERCI pour votre aide

  8. #8
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Par défaut
    euuh, en fait je viens de me rendre compte que certaine lignes ont été modifié manuellement par quelqu'un d'autre,

    donc il faut que je mette un "" if "" pour modifier uniquement les lignes qui n'ont pas été modifié, donc in if la ligne se termine par FFFRz ne rien faire
    sinon rajouter le FFFRz, je ne sais pas si c'est claire ou..

    Merci en tt cas

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

Discussions similaires

  1. Besoin d'aide commandes shell administration serveur linux
    Par SEIYA. dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 10/03/2015, 17h17
  2. Aide commande shell
    Par napster94700 dans le forum VB.NET
    Réponses: 2
    Dernier message: 27/06/2010, 14h05
  3. Besoin d'aide pour un script shell
    Par lecharcutierdelinux dans le forum Linux
    Réponses: 5
    Dernier message: 20/05/2006, 10h36
  4. Besoin d'aide - initialiser un bouton de commande
    Par newcal dans le forum Access
    Réponses: 2
    Dernier message: 10/02/2006, 11h02
  5. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48

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