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 :

Effacer le dernier caractère d'un fichier.


Sujet :

Shell et commandes GNU

  1. #1
    Membre émérite Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Par défaut Effacer le dernier caractère d'un fichier.
    Bonjour,

    J'utilise un fichier paramètre pour une application, or lors de mon extraction des paramètres, un espace se met à la fin.
    C'est assez embêtant car ca fait planter mon appli arrivé à l'espace (boucle sur la liste de param).

    Je stock une liste de paramètres dans un fichier "Liste_table"
    Je souhaiterai avoir le même contenu que ce fichier, avec l'espace final en moins, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fonction_enleve_derniere_caractere(Liste_table) > Liste_table
    J'ai trouvé sur le net des bouts de code genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    expr "bouh" : "\(.*\).$"
    Qui permettent d'enlever le dernier caractère, mais j'arrive pas à l'appliquer sur mon fichier.

    Pouvez vous me guider sur la façon de faire ?

    merci d'avance.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    le mieux serait de voir, en amont, pourquoi un espace s'ajoute.

    à quoi ressemble le fichier ?
    comment extrais-tu les données ?
    etc
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '$!d;s/.$//' fichier > fichier_pur

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Citation Envoyé par frp31 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '$!d;s/.$//' fichier > fichier_pur
    A part que là tu ne récupères que la dernière ligne dans fichier_pur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '$ s/.$//' fichier > fichier_pur

  5. #5
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,

    A part que là tu ne récupères que la dernière ligne dans fichier_pur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '$ s/.$//' fichier > fichier_pur
    le dernier caractère d'un fichier est forcément sur la dernière ligne , le reste de la selection et les autres traitements sur le fichier ne sont pas décrit puisque chaque besoin est différent.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Tu ne m'a pas compris, ta syntaxe est fausse concernant la récupération du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ cat plop 
    blabla
    blibli
    blublu
    blybly
    $ sed '$!d;s/.$//' plop 
    blybl
    $ sed '$ s/.$//' plop 
    blabla
    blibli
    blublu
    blybl
    $

  7. #7
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Tu ne m'a pas compris, ta syntaxe est fausse concernant la récupération du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ cat plop 
    blabla
    blibli
    blublu
    blybly
    $ sed '$!d;s/.$//' plop 
    blybl
    $ sed '$ s/.$//' plop 
    blabla
    blibli
    blublu
    blybl
    $
    non je fais exprès comme ça pour permettre d'autres traitements sur le fichier ce que ta méthode ne permet pas puisque tu récupères TOUT le fichier et donc une seconde passe en cas d'autres traitements serai nécéssaire

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par frp31 Voir le message
    non je fais exprès comme ça pour permettre d'autres traitements sur le fichier ce que ta méthode ne permet pas puisque tu récupères TOUT le fichier et donc une seconde passe en cas d'autres traitements serai nécéssaire
    Désolé mais moi pas comprendre

    Ton fichier fichier_pur ne contenant qu'une ligne (la dernière en l'occurrence), expliques-moi comment tu peux y effectuer un autre traitement ?

    En récupérant TOUT on peut faire d'autres traitements, en ne récupérant qu'une ligne on ne peut traiter que cette ligne...

    Désolé s'il y a confusion, mais là je ne pige vraiment pas ton raisonnement

  9. #9
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Désolé mais moi pas comprendre

    Ton fichier fichier_pur ne contenant qu'une ligne (la dernière en l'occurrence), expliques-moi comment tu peux y effectuer un autre traitement ?

    En récupérant TOUT on peut faire d'autres traitements, en ne récupérant qu'une ligne on ne peut traiter que cette ligne...

    Désolé s'il y a confusion, mais là je ne pige vraiment pas ton raisonnement
    vu la question il n'y pas que ce traitement à faire ça n'est qu'une intervention sur le fichier mais y'en a d'autres...

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par frp31 Voir le message
    vu la question il n'y pas que ce traitement à faire ça n'est qu'une intervention sur le fichier mais y'en a d'autres...
    Ben justement si tu réduis ledit fichier à une seule ligne après ton traitement il va être difficile d'enchaîner d'autres traitements, non ?

  11. #11
    Membre émérite Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Par défaut
    Merci messieurs pour ces infos.
    ca m'a été très utile, et j’espère que ça le sera aussi pour d'autres membres.


    @N_BaH
    PI : le fichier est généré par Datastage, et pas par moi. J'ai simplifié les explications pour pas encombrer ^^

  12. #12
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Ben justement si tu réduis ledit fichier à une seule ligne après ton traitement il va être difficile d'enchaîner d'autres traitements, non ?
    les autres traitements sont à faire en même temps ou avant sur tout SAUF la dernière ligne et traiter la dernière ligne et tout envoyer sur le fichier résultat ...

    le traitement n'est pas forcément séquenciel

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par frp31 Voir le message
    les autres traitements sont à faire en même temps ou avant sur tout SAUF la dernière ligne et traiter la dernière ligne et tout envoyer sur le fichier résultat ...
    Avec ta syntaxe ce n'est pas possible

    le "$!d" supprime tout ce qui existe avant la dernière ligne, difficile de traiter quoi que ce soit dans ce cas là, que ce soit avant ou après

    Un exemple :

    Le fichier de départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ cat plop 
    blabla
    blibli
    blublu
    blybly
    On va donc remplacer les "a" par des "o" et supprimer le dernier caractère de la dernière ligne (oui je sais... )

    Ta méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed '$!d;s/.$//;s/a/o/g' plop 
    blybl
    Même en mettant la substitution avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed 's/a/o/g;$!d;s/.$//' plop 
    blybl
    Ma mienne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ sed '$ s/.$//;s/a/o/g' plop 
    bloblo
    blibli
    blublu
    blybl
    PS. Si je n'ai toujours rien compris, merci de me dire où

  14. #14
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Avec ta syntaxe ce n'est pas possible

    le "$!d" supprime tout ce qui existe avant la dernière ligne, difficile de traiter quoi que ce soit dans ce cas là, que ce soit avant ou après
    bien sur que si tu traites les données machin truc, puis tu vires le caractère anormal généré sur la fin de la dernière ligne action qui ne peut en aucun cas être réalisée avant que la ligne ne soit générée !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    traitement1  fichier >> fictraite # la ligne problème est crée là
    traitement2 fictraite >> fichierfinal # on traite le  fichier sauf la ligne de fin
    sed '$!d;s/.$//' fictraite >> fichierfinal # on corrige la ligne à problème
    posttraitements # si besoin
    ============
    arretes là ça fait plusieurs fois que je répète que c'est juste la partie extraordinairement précise du problème pas un programme généraliste pour tous les cas de la planète... évidement que la syntaxe seule nue comme ça ne fera que une ligne forcément !

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

Discussions similaires

  1. [XL-2003] effacer les derniers caractères du nom de fichier
    Par ninikosim dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/04/2011, 14h24
  2. Réponses: 0
    Dernier message: 24/11/2009, 23h29
  3. Réponses: 0
    Dernier message: 26/09/2008, 11h47
  4. Accéder aux n derniers caractères d'un fichier
    Par Samahell dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 27/02/2008, 19h42
  5. effacer la dernier ligne d'un fichier
    Par maz dans le forum C
    Réponses: 2
    Dernier message: 17/11/2006, 11h56

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