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 :

Lecture d'un fichier et espace de fin de ligne


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 50
    Points : 39
    Points
    39
    Par défaut Lecture d'un fichier et espace de fin de ligne
    Bonjour,
    J'essaye de trouver dans un fichier ceux qui se terminent par des espaces.

    Malheuresement, j'ai l'impression que perl me supprime tout les espaces en fin de ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    open(fd, $ARGV[0]);
    @file = <fd>;
    close(fd);
     
    foreach $line (@file)
    {
        print "'$line'";
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    thomas@tefnout# ./test.pl titif
    'sddfds
    ''ddd
    '%                                                                                                                                                            thomas@tefnout# cat -e titif
    sddfds   $
    ddd$
    thomas@tefnout#
    merci d'avance !

  2. #2
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    salut,

    Tu devrais peut-etre remplacer tes espaces par qqch d'autre si tu veux les voir. Perso j'ai du mal a les voir dans ton code

    genre ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -i.bak -pe 's/\s\n$/ESPACE\n/g' titif
    @+
    Mr6

  3. #3
    Membre habitué Avatar de mensoif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Points : 129
    Points
    129
    Par défaut
    Ou sinon, tu peux rajouter dans ta boucle, (avant le print)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    next if ( $line !~ /\s$/ );
    qui passe à la ligne suivante si la ligne courante ne se termine pas par un espace (au sens large du terme), et ne t'affichera donc que les lignes souhaitée!

  4. #4
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Toutankharton Voir le message
    Bonjour,
    J'essaye de trouver dans un fichier ceux qui se terminent par des espaces.

    Malheuresement, j'ai l'impression que perl me supprime tout les espaces en fin de ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    open(fd, $ARGV[0]);
    @file = <fd>;
    close(fd);
     
    foreach $line (@file)
    {
        print "'$line'";
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    thomas@tefnout# ./test.pl titif
    'sddfds
    ''ddd
    '
    Il ne les supprime pas, regarde attentivement où les quotes se retrouvent : le problème est que tu mets les quotes autour de la ligne tout entière, nouvelle ligne (\n) inclue...

    Pour quelque chose de plus lisible, essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'chomp; print qq('\''$_'\''\n)' titif
    ou en script complet (pas un uniligne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/usr/bin/env perl
    use strict; use warnings;
     
    while(<>) {
      chomp;
      print qq('$_'\n);
    }
    Le code de mensoif marchera pour détecter une ligne avec des espaces à la fin, mais uniquement si tu as bien fait un chomp() avant (sinon il matchera toutes les lignes puisque \n est considéré comme un espace par \s).

    --
    Jedaï

Discussions similaires

  1. Espaces en fin de ligne de commentaire Javadoc
    Par sbrisard dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 09/09/2009, 06h26
  2. Réponses: 1
    Dernier message: 09/11/2008, 22h32
  3. pb d'espace en fin de ligne bulk insert
    Par zer35 dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 21/05/2008, 14h55
  4. Supprimer les espaces en fin de ligne
    Par papyreno dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 21/02/2008, 22h11
  5. Réponses: 3
    Dernier message: 03/01/2008, 12h14

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