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 21/03/2007, 12h39   #1
Membre régulier
 
Inscription : juillet 2002
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 150
Points : 83
Points : 83
Par défaut petit script avec grep

Bonjour,

je suis bloqué dans un script, je veux chercher une chaîne de caractère dans un type de fichiers particuliers et remplacer cette chaîne de caractère par le vide.

Code :
1
2
3
4
5
6
 
for file in `find . -name "*.[CcHH]" | xargs grep $1`
do 
   sed -e "s/$1/ /g" $file > temp_1
   mv temp_1 $file
done
question : j'ai un problème dans le find . -name "*.[CcHH]" | xargs grep $1, moi j'ai besoin des noms des fichiers pour pouvoir itérer sur ces fichiers et remplacer la chaîne $1 par un espace.

merci

turbo_chess
__________________
Demain n'est plus à attendre mais à inventer !!!
turbo_chess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 13h20   #2
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
et comme cela...

Code :
find . -name "*.[CcHH]" | xargs grep -i $chaine | awk -F ':' '{print $1}'
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 13h29   #3
Membre régulier
 
Inscription : juillet 2002
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 150
Points : 83
Points : 83
Citation:
Envoyé par gorgonite
et comme cela...

Code :
find . -name "*.[CcHH]" | xargs grep -i $chaine | awk -F ':' '{print $1}'
Bonjour,

ça marche merci

Code :
1
2
 
$ find . -name "*.[CcHh]" | xargs grep adil | awk -F ':' '{print $1}'
le résultat est :

NB : il y a seulement un petit problème, il faut que les fichiers trouvés soit > 1

merci

turbo_chess
__________________
Demain n'est plus à attendre mais à inventer !!!
turbo_chess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 13h40   #4
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
Citation:
Envoyé par turbo_chess
NB : il y a seulement un petit problème, il faut que les fichiers trouvés soit > 1

normal...

mais un test avec wc -l devrait te le confirmer

Code :
1
2
3
4
5
6
7
8
 
RAW_RES=`find . -name "*.[CcHH]" | xargs grep -i $chaine` 
NB_RES=`cat $RAW_RES | wc -l`
if [$NB_RES -gt 0]
then
RES=`cat $RAW_RES | awk -F ':' '{print $1}'
...
fi
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2007, 15h39   #5
Membre régulier
 
Inscription : juillet 2002
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 150
Points : 83
Points : 83
Bonjour,

merci c'est gentil de ta part.

il y a un argument dans grep (-l), il liste les fichiers où la chaîne a été trouvé, il suffit seulement que j'ajoute quelques tests.

Code :
1
2
3
4
5
for file in `find . -name "*.[CchH]" | xargs grep -l $1`
do
   sed -e "s/$1/ /g" $file > temp_1
   mv temp_1 $file
done
merci

turbo_chess
__________________
Demain n'est plus à attendre mais à inventer !!!
turbo_chess 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 05h20.


 
 
 
 
Partenaires

Hébergement Web