Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2011, 20h04   #1
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 47
Points : 39
Points : 39
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 :
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.
2beornot2be est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/12/2011, 20h25   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 072
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 072
Points : 4 155
Points : 4 155
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é :
sed -s -i.bak '/MA_CHAINE/d' $(grep -rl "MA_CHAINE" $1 | egrep '.php|.xml|.xmls|.html|.htm|.asp|.aspx')
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 11/12/2011, 23h09   #3
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 47
Points : 39
Points : 39
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...
2beornot2be est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 12/12/2011, 06h54   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 072
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 072
Points : 4 155
Points : 4 155
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_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 12/12/2011, 23h40   #5
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 47
Points : 39
Points : 39
ok, je vais regarder plus en détail car je ne connais que les opérations basiques...
merci
2beornot2be est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h24.


 
 
 
 
Partenaires

Hébergement Web