|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre émérite
![]() ![]() Michaël Conseil - Consultant en systèmes d'information Inscription : juin 2003 Messages : 673 ![]() |
Bonjour à tous,
voilà je suis confronté à une situation où un script KornShell m'aiderait préciseusement. J'ai obtenu de la part d'un client des codes sources associés à des commons. C'est du Fortran ! Le problème est qu'ils sont nommés du type alors que les veut en . Il y en a 260 comme ça et j'aimerais les renommer automatiquement en utilisant les regexp je pense mais avec les regexp on est pas trop copains... Vous auriez une idée svp ? Merci d'avance
__________________
Michaël Mary Consultant PLM dans une société de conseil toulousaine Auditeur CNAM-IPST depuis septembre 2008 "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." John F. Woods mon cv et mon domaine et mon blog Aucune question technique par MP, svp |
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 546 ![]() |
et pourquoi pas ?
Code :
for i in common.* ; do mv $i `echo $i | cut -d"." -f2`.h ; done |
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() ![]() Michaël Conseil - Consultant en systèmes d'information Inscription : juin 2003 Messages : 673 ![]() |
merci merci merci merci... Tu m'as sauvé la vie !
Excuse-moi mais pourrais-tu détailler ton cheminement pour faire cela ? Ainsi, je n'embêterais plus personne pour ce genre de tâches "banales" mais néanmoins ingrates ! Merci encore
__________________
Michaël Mary Consultant PLM dans une société de conseil toulousaine Auditeur CNAM-IPST depuis septembre 2008 "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." John F. Woods mon cv et mon domaine et mon blog Aucune question technique par MP, svp |
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 546 ![]() |
pour tout fichier commun.truc ;
faire renome le nom commun.truc vers le nom constitué de [[l'affichage du nom commun.truc] coupé au "." gardant la fin (f2)].h fin de boucle ---------------------------- `` interprete la commande entre les back-quotes echo = afficher cut = decoupe a l'endroit -d ici le caractere "." et garde la fin (-f2) puis .h en tant que simple chaine de caractere (puise que le nom de fichier est une chaine de caractere) voilou. |
|
|
00
|
|
|
#5 | ||
|
Membre émérite
![]() ![]() Michaël Conseil - Consultant en systèmes d'information Inscription : juin 2003 Messages : 673 ![]() |
Merci beaucoup !!! C'est très clair maintenant.
Puisque tu me semble calé avec le shell, petite question supplémentaire : Puisque maintenant j'ai de vrais includes, il faut que je mette à jour mes sources. A l'origine, les fichiers contiennent des appels bizarroïdes aux includes : et maintenant je souhaite remplacer toutes ces lignes en : Je ne sais pas trop par quoi commencer... Je précise bien que dans la version originale, il n'y a pas de '#' avant l'include. C'est pas top ca. Alors j'ai pensé faire Code :
__________________
Michaël Mary Consultant PLM dans une société de conseil toulousaine Auditeur CNAM-IPST depuis septembre 2008 "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." John F. Woods mon cv et mon domaine et mon blog Aucune question technique par MP, svp |
||
|
00
|
|
|
#6 |
![]() ![]() Inscription : août 2005 Messages : 8 306 ![]() |
Faut utiliser sed :
Code :
for i in *.h; do sed -i 's/^include .common\.\(.*\).$/#include \1.h/'; done
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#7 | ||
|
Membre émérite
![]() ![]() Michaël Conseil - Consultant en systèmes d'information Inscription : juin 2003 Messages : 673 ![]() |
Ce serait pas plutôt :
Code :
Pour sed -i, tu es sûr ? Parce que sed -i n'est pas reconnu chez moi... Je suis sous KSH. en tout cas merci, je vais essayer. Pour se former à awk et sed, vous me conseillerez quoi ? Parce que google, c'est vaste...
__________________
Michaël Mary Consultant PLM dans une société de conseil toulousaine Auditeur CNAM-IPST depuis septembre 2008 "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." John F. Woods mon cv et mon domaine et mon blog Aucune question technique par MP, svp |
||
|
00
|
|
|
#8 | ||
![]() ![]() Inscription : août 2005 Messages : 8 306 ![]() |
L'option -i ne doit exister que pour le sed GNU. Ca dépend de ton OS. Dans ce cas, faut rediriger vers un fichier temporaire et le renommer :
Code :
for i in *.for; do sed 's/^include .common\.\(.*\).$/#include \1.h/' > $i.tmp; mv $i.tmp $i; done Code :
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
||
|
|
00
|
|
|
#9 |
|
Membre émérite
![]() ![]() Michaël Conseil - Consultant en systèmes d'information Inscription : juin 2003 Messages : 673 ![]() |
Je ne veux pas faire de fichier .c.
En fait, c'est juste que l'on utilise dans notre chaîne de production des #include "xxx.h" plutôt que des commons déclarés à la rache dans le code. Donc, c'est dans le fichier .for que je veux changer les lignes d'include. Merci pour l'aide.
__________________
Michaël Mary Consultant PLM dans une société de conseil toulousaine Auditeur CNAM-IPST depuis septembre 2008 "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." John F. Woods mon cv et mon domaine et mon blog Aucune question technique par MP, svp |
|
00
|
Copyright © 2000-2012 - www.developpez.com