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 :

Bash: récursivité entre grep / egrep et sed


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 59
    Par défaut Bash: récursivité entre grep / egrep et sed
    Bonjour,
    Je veux supprimer une ligne bien particulière dans des fichiers de "type" web, c-a-d .php / .asp / .html / .htm / etc...
    De plus cette opération doit être faite dans l'ensemble d'un répertoire, de façon récursive.

    L'idée était d'utiliser grep -rl pour la partie recherche dans les fichiers en récursif, puis egrep pour filtrer sur les type de fichier et enfin un sed avec la chaine à supprimer dans les fichiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -rl "MA_CHAINE" $1 | egrep '.php|.xml|.xmls|.html|.htm|.asp|.aspx' | sed '/MA_CHAINE/d'
    Problème 1: le premier grep prend donc les fichiers qui ne sont pas de "type web".
    Problème 2: sed ne semble pas fonctionner avec ma ligne de commande....

    Pour info je suis sous Ubuntu 10.04 (netbook) et bash v4.1.5

    Merci pour votre aide.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    Bonjour,

    ce qui arrive à sed c'est les noms des fichiers, et non leur contenu, donc sed ne les modifiera pas !
    essaye ainsi :
    Code non testé : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -s -i.bak '/MA_CHAINE/d' $(grep -rl "MA_CHAINE" $1 | egrep '.php|.xml|.xmls|.html|.htm|.asp|.aspx')
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 59
    Par défaut
    Merci, là en effet la commande sed répond, par contre elle a du mal avec les fichiers contenant des espaces => "Aucun fichier ou dossier de ce type".
    J'ai tenté avec des "" ou '' mais c'est pire...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    Evidemment , tout cela est trop compliqué pour fonctionner sans problème (entre autre, grep et sed font le travail en double)

    find permet de retrouver des fichiers en utilisant des regex de différents types. Regarde le man, et choisis celui qui te convient.

    Ensuite, l'option-commande -exec de find ne contiendra que la commande sed
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 59
    Par défaut
    ok, je vais regarder plus en détail car je ne connais que les opérations basiques...
    merci

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

Discussions similaires

  1. Commande grep/sed dans script bash avec regex
    Par 1r2R1 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 02/04/2014, 16h49
  2. un grep dans un sed?
    Par sumakali31 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 02/04/2012, 14h18
  3. Réponses: 11
    Dernier message: 04/02/2012, 18h24
  4. [Bash] différence entre "./script.sh" et ". ./script.sh"
    Par wodel dans le forum Administration système
    Réponses: 3
    Dernier message: 20/10/2010, 16h30
  5. Réponses: 6
    Dernier message: 13/03/2010, 10h02

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