IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Ligne de commande : Inserer le nom du fichier dans le fichier


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Cadre
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Ligne de commande : Inserer le nom du fichier dans le fichier
    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++

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Décembre 2012
    Messages : 43
    Points : 91
    Points
    91
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
    echo Debut du programme
    REM création d'un répertoire de sortie contenant les fichiers modifiés
    mkdir sortie
     
    for /f "delims=" %%i in ('dir /b *.txt') do (
    echo %%i > tmp.txt
    if "%%i" NEQ "tmp.txt" copy /B tmp.txt+"%%i" sortie\\"%%i" >> NUL
    )
     
    echo Fin du programme
    et placer tout ça ans un fichier avec l'extension .bat'

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    mkdir( "sortie" );
     
    my @listeFichiers = getListeFichiers(); //Fonction à terminer
    foreach my $fichier (@listeFichiers){
     my $nom = $fichier;
     $nom =~ s/\.[^.]*$//;
     
     open( FILE , "<$fichier") or die("Can't open $fichier : $!");
     my @lignes = <FILE>;
     close( FILE );
     
     open( FILE_OUT , ">sortie/$fichier");
     print FILE_OUT $name, "\n";
     print FILE_OUT @lignes:
     close( FILE_OUT );
    }
     
    sub getListeFichiers{
     my @listeFichiers = ();
     
     //TODO
     //voir les tutos sur le net
     
     return @listeFichiers;
     
    }
    Saaaaluuut Nounou!!

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Un uniligne perl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -E 'say $ARGV if $. == 1; $. = 0 if eof' *.txt
    Attention cependant, si le chemin est relatif lors de l'appel, c'est le nom relatif qui est ajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -E 'say $ARGV if $. == 1; $. = 0 if eof' ../tmp/toto.txt
    donne :
    ../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é
    Si c'est utile, say

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Cadre
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    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+

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Décembre 2012
    Messages : 43
    Points : 91
    Points
    91
    Par défaut
    je me permet de reprendre l'uniligne de philou, en la modifiant pour ajouter le nom du fichier sans l'extension :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -e 'my $var = $ARGV; $var =~ s/\.[^.]*$//;print "$var\n" if $. == 1; $. = 0 if eof' *.txt
    ça, c'est le code pour ma version de perl. (v5.8.8

    Pour respecter la version perl de philou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -E 'my $var = $ARGV; $var =~ s/\.[^.]*$//;say "$var\n" if $. == 1; $. = 0 if eof' *.txt
    à noter que je ne peux pas tester cette version (of course).
    et j'ai rajouté un "\n" pour avoir le nom du fichier uniquement sur la première ligne.
    Saaaaluuut Nounou!!

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Cadre
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    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+

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Cadre
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    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+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/03/2009, 19h48
  2. inserer le résultat issu du parsage des fichiers dans un fichier .txt
    Par hassna.kaibous dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 13/06/2008, 16h42
  3. Réponses: 4
    Dernier message: 28/08/2006, 14h47
  4. Réponses: 12
    Dernier message: 06/01/2006, 07h44
  5. Unicité de nom de clés dans un fichier .INI
    Par The_Warlord dans le forum Langage
    Réponses: 8
    Dernier message: 11/11/2004, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo