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 :

expression régulière grep


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut expression régulière grep
    Bonjour,

    Voila je récupère dans une liste une série de ligne de type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     822    1 -rwxrwx---   1 jfhhj    opfddu        719 May  4  2005 /home/toto/fichier.txt
    je voudrais créer une table de hachage avec les infos nom de fichier et et dates.

    donc faire ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    %hach(/home/toto/fichier.txt =>May  4  2005 )
    J'arrive à faire un grep sur le nom de fichier mais pas sur la date.

    Auriez-vous une idée.

    Merci.

    MaitrePylos

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bon,

    je vais essayer d'être plus clair(c'est surtout pour moi ).

    Je récupère les lignes grâce à un split

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my @list = split( /\.txt/, $stdout );
    Je me retrouve avec près de 500 lignes.

    je voudrais les manipuler par lignes découper.

    donc je fais un nouveau split (c'est ici que ça va pas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    for ($i = 0; $i <@list ; $i++)
    {
    	$words[$i] = split /\s+/, $list[$i];
    }
    donc si j'affiche cela ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for ( $i = 0 ; $i < $word[0] ; $i++ ) {
        print $word[0][$i]
    }
    je pense que je melange les tableau de tableau et les références, mais je débute et patauge un peu.

    Merci de votre aide.

  3. #3
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Bonjour. Je ferais plutôt comme ça (le détail est adapté à ma sortie de ls).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl -w
    use strict;
     
    open FILE, 'ls -l |';
    my %files;
     
    while (<FILE>) {
        my @field = split (/\s+/);
        next if ($#field < 8);
        $files{$field[8]} = join " ", $field[6], $field [5];
     
    }
     
    map { print "$_ => $files{$_}\n" } sort keys %files;
    On peut certainement faire plus élégant.

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Merci pour ton aide.

    Cela m'a permis d'obtenir mon résultat que j'obtient comme ceci :

    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
     
    for ($i = 0; $i <@list ; $i++)
    {
    	@words = split /\s+/, $list[$i];
     
    	push @TdT, [ @words ];
     
     
     
    }
     
    #et j'imprime éventuellement comme ceci
    print $TdT[1][0]."\n";
    print $TdT[1][1]."\n";
    print $TdT[1][2]."\n";
    print $TdT[1][3]."\n";
    print $TdT[1][4]."\n";
    print $TdT[1][5]."\n";
    print $TdT[1][6]."\n";
    print $TdT[1][7]."\n";
    print $TdT[1][8]."\n";
    print $TdT[1][9]."\n";
    print $TdT[1][10]."\n";
    print $TdT[1][11]."\n";

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #et j'imprime éventuellement comme ceci
    print $TdT[1][0]."\n";
    print $TdT[1][1]."\n";
    print $TdT[1][2]."\n";
    print $TdT[1][3]."\n";
    print $TdT[1][4]."\n";
    print $TdT[1][5]."\n";
    print $TdT[1][6]."\n";
    print $TdT[1][7]."\n";
    print $TdT[1][8]."\n";
    print $TdT[1][9]."\n";
    print $TdT[1][10]."\n";
    print $TdT[1][11]."\n";
    Hum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for my $i (0..11) {
      print "$TdT[1][$i]\n";
    }
    --
    Jedaï

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    oups

    Merci

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

Discussions similaires

  1. grep et une expression régulière
    Par Don_Q dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 18/10/2012, 13h54
  2. [grep] Une question sur les expressions régulières
    Par Bahan_auboulot dans le forum Linux
    Réponses: 5
    Dernier message: 04/12/2008, 19h12
  3. Expressions régulières - Extraction de données Grep
    Par ritual dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 10/10/2008, 14h55
  4. grep et expression régulière
    Par eZula dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 12/04/2008, 17h49
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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