|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Cadre Inscription : janvier 2013 Messages : 5 ![]() |
Bonjour à tous,
Avant tout, je passe pas mal de temps sur ce site que j'adore. Encore merci à tous. Depuis quelques jours je tente de me mettre à Perl, avant je faisait pas mal de Matlab et VBA. Pour le moment je trouve que Perl est plus concis pour l'usage que j'en ai donc tout se passe pas mal, ca va venir ca va venir.... J'ai fait le tour du site mais je n'ai pas trouvé de réponses, Le cas de figure : - J'ai dans un répertoire un ensemble de fichier .txt, toutes les manips sont faites mais j'aimerais savoir comment insérer au début de chaque fichier son nom, sans l'extension. Idéalement, via une ligne de commande. Ex : Repertoire Fichier1.txt Fichier2.txt FIchier3.txt Contenu initial du Fichier1.txt : - blablabla - blablablabla bla - b Ce que je voudrais : Fichier1 blablabla - blablablabla bla - b Merci d'avance pour notre aide, s'il manque des infos ne pas hésiter. A++ |
|
|
00
|
|
|
#2 | ||||
|
Membre du Club
![]() Jean Michel Ingénieur intégration Inscription : décembre 2012 Messages : 33 ![]() |
une ligne de commande ? quel langage ?
j'ai déjà vu ce genre de problème en batch windows, il fallait rajouter un entête présent dans un fichier texte dans une liste de fichiers : http://www.clubic.com/forum/programm....html#13304148 dans ton cas, il faudrait faire un truc du genre : Code :
en perl, je ferais un programme de la sorte (à tester et vérifier), faire gaffe aux chemins et au séparateur que j'utilise (/ dans le cas de windows ). Code :
|
||||
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2009 Messages : 2 678 ![]() |
Un uniligne perl :
Code :
perl -pi -E 'say $ARGV if $. == 1; $. = 0 if eof' *.txt Code :
perl -pi -E 'say $ARGV if $. == 1; $. = 0 if eof' ../tmp/toto.txt ../tmp/toto.txt
__________________
Plus j'apprends, et plus je mesure mon ignorance (philou67430) Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book) Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé Using strict and warnings is good for you. |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Cadre Inscription : janvier 2013 Messages : 5 ![]() |
Merci pour vos réponses,
>Jiheme44 : pour le moment et dans ce cas, je passe pas des unilignes. En fait il y a plusieurs raisons, déjà, c'est pour répondre à des demandes ponctuelles de collègues sur des traitements de données bioinfo, ensuite je suis sous mac et dans un autre pays. pas grave? Et bien si, ca change pas mal de chose : - Perl et Mac, c'est peut etre parceque je suis débutant, mais clairement c'est pas super compatible, disons que je passe plus de temps à monter l'environnement qu'autre chose (pb de liaisons, de déclarations, de modules non trouvé, etc etc....). J'ai déjà pu remarqué que les simples quotes posent souvent problème....il faut les resaisir par la personne qui exécute le code :-) - Dans un autre pays avec des collègues non informaticien.... la vous comprendrez tous ce qu'un utilisateur est capable de faire avec un code qui répond aux besoins et dire que ca marche pas...bla bla bla IL me faut encore un peu de temps, pour réussir à tout faire dans un seul fichier Perl et communiquer mon code aux collègues pour qu'ils puissent simplement l'exécuter... Je préfére privilégier Perl pour les traitements, donc je regarde tes codes > Philou67430 : Merci pour les unilignes, ca ajoute bien dans chaque fichier le nom du fichier (dans la mesure ou on se trouve dans le répertoire courant avec le shell). Par contre ca ajoute l'extension du fichier, je vais voir comment virer l'extension pour laisser uniquement le nom di fichier, ) Des que je trouve qqc je posterais A+ |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Jean Michel Ingénieur intégration Inscription : décembre 2012 Messages : 33 ![]() |
je me permet de reprendre l'uniligne de philou, en la modifiant pour ajouter le nom du fichier sans l'extension :
Code :
perl -pi -e 'my $var = $ARGV; $var =~ s/\.[^.]*$//;print "$var\n" if $. == 1; $. = 0 if eof' *.txt Pour respecter la version perl de philou : Code :
perl -pi -E 'my $var = $ARGV; $var =~ s/\.[^.]*$//;say "$var\n" if $. == 1; $. = 0 if eof' *.txt et j'ai rajouté un "\n" pour avoir le nom du fichier uniquement sur la première ligne. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Cadre Inscription : janvier 2013 Messages : 5 ![]() |
Merci Jean Michel,
je vais essayer ces codes un peu plus en détail. je suis sous mac , perl5 (revision 5 version 12 subversion 4). Et en vitesse, j'ai lancé les deux codes, il y a modification des fichiers sources (modification de la date de mise à jour), mai sje ne vois pas la différence (pas d'ajout du nom dans le fichier......) Il est minuit et je m'y recolle asap. Encore merci. A+ |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Cadre Inscription : janvier 2013 Messages : 5 ![]() |
heu... quand je disais qu'il était minuit hein.... j'ai relancé les scripts et c'est ok....il y a un truc qui m'échappe la quand même.
Bref l'important c'est que ca passe...encore merci à tous. c'est résolu A+ |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com