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 29/03/2011, 09h23   #1
Futur Membre du Club
 
Inscription : novembre 2003
Messages : 50
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 50
Points : 17
Points : 17
Par défaut Script sed/find/grep pour récupérer des strings dans plusieurs noms de fichier

Bonjour,

Dans un script shell je souhaite mettre à jour une variable en récupérant dans un dossier une string contenu dans un nom de fichier.
Si plusieurs fichiers sont présents, il faut que je puisse concaténer les strings dans ma variable, et si plusieurs strings identiques sont récupérées, une seule doit être copiée.

Ex:
J'ai un dossier
- dossier
|_____fichier1_TEST1
|_____fichier2_TEST2
|_____fichier3_TEST1

Je souhaite mettre dans une variable :
VARIABLE = TEST1"texte à ajouter dans ma variable"TEST2

J'arrive à récupérer dans la sortie standard ou dans un fichier
TEST1
TEST2
Mais je n'arrive pas à concaténer les deux strings et à insérer du texte additionnel.

Merci d'avance pour votre coup de pouce.
A+

Jon
jonzuzu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/03/2011, 09h34   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
bonjour,

en utilisant des accolades :
Code :
1
2
3
4
5
$ string1=TEST1
$ string2=TEST2
$ variable="${string1}bla bla${string2}"
$ echo "$variable"
TEST1bla blaTEST2
...
?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/03/2011, 11h54   #3
Futur Membre du Club
 
Inscription : novembre 2003
Messages : 50
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 50
Points : 17
Points : 17
Cela n'est en fait pas aussi simple.
Pour être plus précis je peux avoir dans mon dossier ceci :

TEST.X1.xml

ou :

TEST1.X1.xml
TEST2.X2.xml
TEST3.X1.xml

Le but est de récupérer X1.xml ou X1.xml et X2.xml si plusieurs sont présents

Et ensuite de mettre cela dans une variable :

variable=data.X1.xml si un seul fichier présent
ou
variable=data.X1.xml,data.X2.xml si plusieurs fichiers présents (dans ce cas deux)

Merci
Jon
jonzuzu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 12h38   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
par exemple :
Code :
1
2
3
4
$ maFonction() for param; do [ -n "$variable" ] && variable+=",data.${param#*.}" || variable="data.${param#*.}"; done
$ maFonction TEST.X1.xml TEST.X2.xml TEST.X3.xml
$ echo "$variable"
data.X1.xml,data.X2.xml,data.X3.xml
cf. man bash Remplacement des paramètres
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 29/03/2011, 17h13   #5
Futur Membre du Club
 
Inscription : novembre 2003
Messages : 50
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 50
Points : 17
Points : 17
Merci beaucoup
Je suis débloqué et mon script tourne bien :-)
jonzuzu 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 00h04.


 
 
 
 
Partenaires

Hébergement Web