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 POSIX Discussion :

supprimer le dernier retour chariot d'un fichier [KSH]


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 81
    Par défaut supprimer le dernier retour chariot d'un fichier
    Bonjour,

    J'aurais besoin de supprimer le dernier retour chariot présent dans un fichier :
    Ligne 1
    Ligne 2
    <- retour chariot à supprimer

    Quelqu'un à une idée?
    Merci d'avance.

  2. #2
    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 Cj_Dal Voir le message
    Bonjour,

    J'aurais besoin de supprimer le dernier retour chariot présent dans un fichier :
    Ligne 1
    Ligne 2
    <- retour chariot à supprimer

    Quelqu'un à une idée?
    Merci d'avance.
    Je n'ai pas la réponse là maintenant tout de suite, mais je suis curieux: qu'est-ce qui peut bien te motiver à vouloir faire cela?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 81
    Par défaut
    Nous avons avons un problème d'intégration par la suite de ce fichier dans une application JAVA. Le fichier ne peut être intégré que lorsque aucun retour à la ligne n'est présent à la fin du fichier...

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu peux utiliser un script sed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cat "mon_fichier" | sed -n '${
    /^[[:blank:]]*$/!p
    b
    }
    p'
    Si c'est la dernière ligne, il imprime uniquement s'il y a autre chose que de l'espace puis il va à la fin du script.
    Sinon, pour les autres lignes, il imprime.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 81
    Par défaut
    Salut,

    Merci pour ta réponse mais j'ai toujours mon retour à la ligne malgrès ta solution (j'ai pris tel quel ta commande en modifiant seulement le mon_fichier)

  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
    Salut,

    Entendons-nous bien...

    Il s'agit de passer d'un fichier comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $> cat plop 
    a
    b
    c
    $>
    Le caractère "c" est sur la dernière ligne et mon prompt "$> " est à la ligne.

    à ce fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $> cat brol 
    a
    b
    c$>
    Le caractère "c" est sur la dernière ligne et mon prompt "$> " est sur la même ligne, le caractère "nl" (new line) a été supprimé.

    Avec un éditeur hexadécimal ça nous donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $> od -a plop 
    0000000   a  nl   b  nl   c  nl
    0000006
    $> od -a brol
    0000000   a  nl   b  nl   c
    0000005
    $>
    Nous sommes d'accord ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 81
    Par défaut
    Oui c'est bien ça,

    J'ai réussi à trouver une solution qui marche très bien mais je suis sur que l'on peut mieux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    NB_LIGNES_FIC=`awk 'END {print NR}' ${FILE_OUT}`
     
        awk -v nb_lignes=${NB_LIGNES_FIC} '
        { 
            if ( NR <= nb_lignes-1 )
            {
              print $(0)
            }
        }' $FILE_OUT >> $FILE_OUT_TMP 
     
        awk -v nb_lignes=$NB_LIGNES_FIC '
        { 
            if ( NR == nb_lignes )
            {
              print $(0)
            }
        }' $FILE_OUT | tr -d '\n' >> $FILE_OUT_TMP
     
        mv $FILE_OUT_TMP $FILE_OUT

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

Discussions similaires

  1. [Batch] Supprimer tous les retour chariots d'un fichier texte
    Par pol2095 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 16/03/2015, 08h50
  2. Supprimer retour chariot dans un fichier CSV
    Par smain_inf dans le forum VBScript
    Réponses: 2
    Dernier message: 20/08/2008, 09h56
  3. Supprimer les dernieres lignes et concatener plusieurs fichier
    Par filsdugrand dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 11/04/2006, 21h15
  4. Mettre des retours chariot dans un fichier
    Par Isa31 dans le forum Langage
    Réponses: 8
    Dernier message: 02/03/2006, 16h13
  5. Problème retour chariot dans un fichier texte
    Par Redondo dans le forum Windows
    Réponses: 2
    Dernier message: 08/02/2006, 18h23

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