Script bash de recherche

Fermé
MrLuck Messages postés 43 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 1 décembre 2010 - Modifié par MrLuck le 1/12/2010 à 11:06
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 1 déc. 2010 à 14:22
Bonjour,

j'aimerai ecrire un script bash qui me permet de rechercher un mot clé dans une liste de fichiers d'un repertoire de façon à pouvoir ajouter derriere une directive.

en gros je voudrai pouvoir faire ça :

Je cherche le mot clé COMMON dans une liste de fichier, lorsque je trouve une occurence, j'ouvre le fichier, je recupere le nom de la variable LISTE

 COMMON /LISTE/ VARIABLE 


Pour ensuite ajouter une phrase où je declare cette LISTE comme ThreadPrivate :

  
COMMON /LISTE/ VARIABLE  
C$OMP THREADPRIVATE (LISTE) 


Je suis nul en script et j'aimerai savoir si vous pourriez me donner une piste

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
1 déc. 2010 à 14:22
Re-

$ ls
fich1.txt  fich2.txt  foo.sh*

$ cat fich1.txt
SUBROUTINE FONCTION

COMMON /VOITURE/ ROUE, VOLANT, CAPOT

... code du programme ...

END

$ cat fich2.txt
SUBROUTINE FONCTION

COMMUN /VOITURE/ ROUE, VOLANT, CAPOT

... code du programme ...

END

$ cat foo.sh 

#! /bin/bash 

#set -xv

for fic in *.txt
do
grep -q "COMMON" "$fic"
RETVAL=$?
if [ "$RETVAL" = 0 ]
then
LISTE="$(awk -F '/' '/COMMON/ { print $2 }' $fic)"
sed -i.bak '/COMMON/{n;s#.*#\nC$OMP THREADPRIVATE('"$LISTE"')\n#}' "$fic"
fi
done


$ ./foo.sh

$ ls
fich1.txt  fich1.txt.bak  fich2.txt  foo.sh*

$ cat fich1.txt
SUBROUTINE FONCTION

COMMON /VOITURE/ ROUE, VOLANT, CAPOT

C$OMP THREADPRIVATE(VOITURE)

... code du programme ...

END

$

;-))
1
MrLuck Messages postés 43 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 1 décembre 2010 5
1 déc. 2010 à 11:37
Merci pour ta réponse,

non ce n'est pas la peine de chercher dans les sous fichiers car j'ai réuni toutes mes sources au même endroit

J'ai par exemple :
SUBROUTINE FONCTION

COMMON /VOITURE/ ROUE, VOLANT, CAPOT

... code du programme ...

END


et moi je veux

SUBROUTINE FONCTION

COMMON /VOITURE/ ROUE, VOLANT, CAPOT

C$OMP THREADPRIVATE(VOITURE)

... code du programme ...

END


Est ce clair ?

Merci pour ta réponse !
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
1 déc. 2010 à 11:07
Salut,

rechercher un mot clé dans une liste de fichiers d'un repertoire
Faut-il aussi chercher dans les sous-répertoires ou pas ?

lorsque je trouve une occurence, j'ouvre le fichier, je recupere le nom de la variable LISTE
Elle est où cette variable par rapport au mot-clé ?

Pour ensuite ajouter une phrase où je declare cette LISTE comme ThreadPrivate :
Cette ligne doit être rajoutée où exactement ?


Merci de poster un exemple de fichier AVANT => APRÈS ;-))
-1