Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Ksh: inverser un fichier pour le lire à l'envers



  1. #1
    raoulglloq

    Ksh: inverser un fichier pour le lire à l'envers


    ------

    Je voudrai lire un fichier à l'envers, de bas en haut.

    J'utilise la fonction "while read line" qui ne semble pas le permettre.
    Je pensai donc dans un premier temps inverser le fichier.

    La commande sort possede l'option -r qui permet d'inverser le tri, cependant il effectue un tri alphanumerique en plus de l'inversion, ce que je ne veut pas, je veux juste inverser.

    Or mon fichier est une log dont chaque ligne commence par "2006", je me demandait donc si il etat possible de restraindre le tri de la commande "sort" au premier caractère ("2"). Cependant l'option des clé ne permet pas de le permettre: il commence en effet par tri sur le caractere correspondant à la clé, mais il tri ensuite sur le reste.

    Qqun a t'il une solution?

    Je me permets de te signaler qu'il existe une charte du forum. Elle dit :

    La courtoisie est de rigueur sur ce forum : pour une demande de renseignements bonjour et merci devraient être des automatismes.
    JPL, modérateur

    -----
    Dernière modification par JPL ; 26/09/2006 à 12h59.

  2. Publicité
  3. #2
    jepoirrier

    Re : Ksh: inverser un fichier pour le lire à l'envers

    Ce n'est pas en Ksh mais si tu as un interprêteur Python à ta disposition, voici le code pour inverser ton fichier et l'afficher :
    Code:
    f = open('fichier.txt', 'r')
    tout = f.readlines()
    f.close()
    tout.reverse()
    print tout
    Si, en plus, tu veux que Python écrive le tout dans un fichier, tu ajoutes :
    Code:
    t = open('renverse.txt', 'w')
    for line in tout:
         t.write(line)
    t.close()

  4. #3
    overmind

    Re : Ksh: inverser un fichier pour le lire à l'envers

    Sauf que dans ton premier code, l'affichage va ressembler à:
    ["Salut!\n","Bonjour\n"]

    ... c'est à dire la chaine sortant de la méthode __str__ de `tout`...

  5. #4
    jepoirrier

    Re : Ksh: inverser un fichier pour le lire à l'envers

    D'accord, le "print tout" était juste là pour montrer que l'ordre des lignes était bien inversé : je pensais que, de toutes façons, le but étant d'obtenir le fichier avec les lignes inversé (pour traitement ultérieur) et pas nécessairement l'affichage. Si c'est l'affichage correct qu'il faut, le code change vraiment peu:
    Code:
    f = open('fichier.txt', 'r')
    tout = f.readlines()
    f.close()
    tout.reverse()
    for line in tout:
    	print line[0:len(line)-1]

  6. A voir en vidéo sur Futura
  7. #5
    overmind

    Re : Ksh: inverser un fichier pour le lire à l'envers

    Disons que si le but est de créer un miniscript pour quelqu'un qui ne connait pas forcément python, autant donner tout de suite du code utilisable.
    (imagine le pauvre si il doit éditer son script à chaque utilisation...)
    Tu aurais même pu faire un effort:
    Code:
    #!/usr/bin/python
    
    import sys
    
    Data = sys.stdin.readlines()
    Data.reverse()
    for line in Data:
     print line
    Lire depuis stdin permet de laisser la gestion des IO fichiers au shell, ce qui est bien pratique.

Discussions similaires

  1. lire un fichier avec Matlab
    Par marionsmiley dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 22/12/2013, 12h36
  2. Aide pour lire un fichier
    Par Ecapsorea dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 09/07/2007, 11h49
  3. lire un fichier en Matlab
    Par hamoudasafira dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 19/06/2006, 19h31
  4. [ksh] lire reellement les lignes d un fichier
    Par raoulglloq dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 25/07/2005, 11h06
  5. comment lire les fichier ps
    Par elel.elel dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 19/07/2005, 23h33
Découvrez nos comparatifs produits sur l'informatique et les technologies.