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

Shell et commandes GNU Discussion :

Le nombre de lignes ne correspond pas


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Par défaut Le nombre de lignes ne correspond pas
    Bonjour,

    Mon prof n'a rien trouvé de mieux pour nous apprendre à utiliser les regex que de nous faire trier un extrait de base de données modifié (date sous des formats abracadabrant, encodages divers, identifiants au format random...) le tout sous la forme d'un fichier txt de 15504 lignes.
    Alors j'ai commencé par découper le fichier selon divers critères mais je me heurte à un premier problème : lorsque j'additionne le nombre de lignes dans le fichier contenant des données sous un format (format1.txt) avec mon fichier original (inventaire1.txt) auquel j'ai retiré les lignes de format1.txt j'obtient 15505 lignes.
    Savez vous d'où vient cette ligne supplémentaire ?
    J'utilise pour afficher le nombre de ligne de mes fichiers, cette commande compte t elle une ligne en fin de fichier par exemple, quelque chose de non affiché et qui serait donc compté deux fois ?
    pour retirer les lignes je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -v -f format1.txt inventaire-complet.txt > inventaire1.txt
    Ou alors ce sont mes regex qui sont foireuses... possible aussi

    Merci d'avance

    PS : si vous avez aussi un logiciel capable de trier ce fichier texte, le mettre en forme, et répondre aux 5 requêtes que je souhaite faire dessus, ce serai super sympa de partager !

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour,

    'wc -l' compte le nombre de retours à la ligne. Donc, si ta dernière ligne n'est pas terminée, pour lui, elle n'existe pas.
    Pour avoir le nombre de lignes, tu préféreras peut-être des techniques comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed -n '$=' fichier
    15505
    'grep' est bien pour filtrer.
    'sed' est bien pour faire de la modification brute de texte.
    'awk' est bien pour modifier un texte organisé en champs (comme une extraction de base ...) ou s'il y a de l'arithmétique.
    'sort' est généralement la commande utilisée pour trier élégamment.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    'wc -l' compte le nombre de retours à la ligne. Donc, si ta dernière ligne n'est pas terminée, pour lui, elle n'existe pas.
    Pour vérifier comment finit ton fichier, tu peux essayer ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tail -1 format1.txt | od -c
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ cat fic_sans_CR.txt
    ligne 1
    ligne 2
    ligne 3
    $ od -c fic_sans_CR.txt
    0000000   l   i   g   n   e       1  \n   l   i   g   n   e       2  \n
    0000020   l   i   g   n   e       3
    0000027
    $ tail -1 fic_sans_CR.txt | od -c
    0000000   l   i   g   n   e       3
    0000007
    $ tail -2 fic_sans_CR.txt | od -c
    0000000   l   i   g   n   e       2  \n   l   i   g   n   e       3
    0000017

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Par défaut
    Bonjour,

    Merci pour vos réponses

    Concernant le nombre de ligne il reste identique que je fasse un sed ou un wc : j'ai toujours une ligne de trop.

    Je ne comprend pas bien l'utilisation du od. On affiche les données ASCII de la page dernière ligne ?
    Quoi qu'il en soit voici le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    leinox@ubuntu:~/TP3-Unix/autre$ tail -1 format1.txt | od -c
    0000000                   0   1   A   9   9       G   O   L      \t   1
    0000020   1   6   3   6   -   0   1      \t   2   0   1   1   -   0   7
    0000040   -   2   1  \t   p   r 303 251   s   e   n   t      \t  \t  \n
    0000060
    Ce que je déteste les regex quand même -_-

    Merci encore !

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Ta question n'a pas de sens. Tu additionnes des choux et des torchons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ grep -v -f <( echo -e "Toto\nTata") <(echo -e "Toto\nToto\nToto\nToto\nToto\nToto\nToto\nToto\nToto\nToto\nJean-Louis\nMireille\nBalthazar\nElodie\nPriscilla")
    Jean-Louis
    Mireille
    Balthazar
    Elodie
    Priscilla
    Dans cet exemple avec ton même raisonnement, tu dirais: 5+2=7 alors que j'en avais 15...

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2012
    Messages : 37
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Ta question n'a pas de sens. Tu additionnes des choux et des torchons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ grep -v -f <( echo -e "Toto\nTata") <(echo -e "Toto\nToto\nToto\nToto\nToto\nToto\nToto\nToto\nToto\nToto\nJean-Louis\nMireille\nBalthazar\nElodie\nPriscilla")
    Jean-Louis
    Mireille
    Balthazar
    Elodie
    Priscilla
    Dans cet exemple avec ton même raisonnement, tu dirais: 5+2=7 alors que j'en avais 15...
    Moi je ne comprend pas ta réponse. Ce que je voulais dire c'était que j'utilisais wc sur mes deux fichiers pour compter le nombre de ligne, puis j'ai essayé avec le sed que tu m'as proposé sur les deux fichiers a nouveau. J'addition chaque fois des lignes. A moins que ton sed fasse autre chose, et je n'ai pas compris.

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

Discussions similaires

  1. [MAMP] La ligne d'erreur ne correspond pas lors d'erreur de syntaxe
    Par pierrot10 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 05/04/2013, 02h43
  2. UPDATE pas même nombre de lignes que SELECT
    Par CinePhil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/11/2008, 16h07
  3. Réponses: 6
    Dernier message: 19/03/2007, 11h09
  4. [VBA-E]Efface ligne ne correspondant pas a mon Secteur
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/08/2006, 09h40
  5. Requête UNION renvoie pas le bon nombre de lignes
    Par le lynx dans le forum Contribuez
    Réponses: 2
    Dernier message: 29/06/2006, 10h52

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