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

Linux Discussion :

Supprimer les deux derniers caractères de chaque ligne d'un fichier


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Par défaut Supprimer les deux derniers caractères de chaque ligne d'un fichier
    Bonjour à tous,

    Voici mon soucis, j'ai un fichier sous fc5 et je voudrais par une commande simple supprimer les deux derniers caractères de chaque ligne de mon fichier.

    Je vous remercie par avance

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Je crois que sed pourra être utile, le tout étant de formaliser une expression régulière englobant les deux derniers caractères d'une ligne.

    Pour t'aider, comme d'habitude : man sed et man re_format. Pour la deuxième page, dans le cas où elle ne serait pas dans les man de ta distribution, consulte là ici : http://www.openbsd.org/cgi-bin/man.c...86&format=html

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par DragVinny
    Bonjour à tous,

    Voici mon soucis, j'ai un fichier sous fc5 et je voudrais par une commande simple supprimer les deux derniers caractères de chaque ligne de mon fichier.

    Je vous remercie par avance
    j'aime bien Ruby pour ce genre de snippet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/usr/bin/env ruby
     
    begin
    	file = File.new( ARGV[0], "r" )
    rescue
    	file = STDIN
    end
     
    while line = file.gets
          # -3  to take the \n into account...
    	puts line[0,line.length-3]
    end
    (l'idéal serait de passer la longueur à stripper en argument…)

  4. #4
    Membre chevronné Avatar de herzleid
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 393
    Par défaut
    Si chaque ligne à une longueur différente tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #!/usr/bin/sh
    while read ligne
    do
            longueur=`echo $ligne|wc -m`
            num=`echo $(( $longueur - 2 ))`
            echo $ligne|cut -c1-$num >> fic_dest
    done < test1.txt
    Si chaque ligne à la même longueur un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cut -c-1-$num mon_fichier >> fic_dest

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par herzleid
    Si chaque ligne à une longueur différente tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #!/usr/bin/sh
    while read ligne
    do
            longueur=`echo $ligne|wc -m`
            num=`echo $(( $longueur - 2 ))`
            echo $ligne|cut -c1-$num >> fic_dest
    done < test1.txt
    Si chaque ligne à la même longueur un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cut -c-1-$num mon_fichier >> fic_dest
    oui cela fonctionnera sans doute aussi,

    mais quand on remarque que echo et cut sont des exécutables à part entière et non des commandes internes du shell…
    (/bin/echo et /usr/bin/cut)
    on peut s'interroger : lancer 4 process à chaque ligne du fichier source traité : n'est-ce pas un "peu" lourd ?

  6. #6
    Membre chevronné Avatar de herzleid
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 393
    Par défaut
    Faut faire le test. QUi est le plus rapide ? L'appel à echo et à cut ou à l'interpréteur rubis ?

    Les paris (troll) sont ouverts. DragVinny oublis pas de précéder les commandes d'un time que l'on puisse avoir la conclusion de ce thriller :p

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par herzleid
    Faut faire le test. QUi est le plus rapide ? L'appel à echo et à cut ou à l'interpréteur rubis ?

    Les paris (troll) sont ouverts. DragVinny oublis pas de précéder les commandes d'un time que l'on puisse avoir la conclusion de ce thriller :p
    Ben moi je parie sur sed....


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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/09/2011, 06h49
  2. Récupérer les derniers caractères d'une ligne d'un fichier texte
    Par Laaris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/01/2009, 16h06
  3. Supprimer les 4 derniers caractères d'une chaine
    Par orditosh dans le forum WinDev
    Réponses: 4
    Dernier message: 28/06/2008, 12h40
  4. choper les deux derniers caractères d'une variable
    Par Mangacker dans le forum C++Builder
    Réponses: 12
    Dernier message: 14/11/2007, 19h08
  5. supprimer les 10 premiers caractères de chaques lignes
    Par herzleid dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 06/02/2007, 11h09

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