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 :

Supprimer le dernier retour chariot d'un fichier


Sujet :

Shell et commandes GNU

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Supprimer le dernier retour chariot d'un fichier
    Bonjour,

    J'ai un fichier de sortie de 3 lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    il
    fait
    beau
    retour chariot
    Est-il possible avec la commande sed ou tr de supprimer le retour chariot en une ligne de commande ?

    En vous remerciant de vos réponses
    .Olivier

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Salut, une proposition toute bête :p
    mais qu'appelles tu retour chariot ?
    un saut de ligne donc \n
    ou vraiment un retour du curseur : \r ?

    Sinon quand tu veux modifier un truc sur la dernière ligne uniquement :
    Sous Kubuntu 20.04

  3. #3
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Quand sed retourne un résultat, il rajoute un retour chariot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    user$ echo aze | sed 's/aze/bla/'
    bla
    user$ echo aze | sed 's/aze/bla/' | perl -pe 'chomp if eof'
    blauser$
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     | perl -pe 'chomp if eof'
    supprime de dernier caractère, c'est à dire \n

    Sinon si tu veux juste enlever les \n inclus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ echo  -e "aze\naze" 
    aze
    aze
    $echo  -e "aze\naze" | tr -d '\n'
    azeaze
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    On aura con/in-firmation quand il aura répondu à hizoka, mais, d'après son exemple, il me semble qu'il veut supprimer la dernière ligne vide du fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ echo -e 'aze\n' | od -c
    0000000    a   z   e  \n  \n                                            
    0000005
    # Supprimer la dernière ligne (vide ou pas)
    $ echo -e 'aze\n' | sed -e '$d' | od -c
    0000000    a   z   e  \n                                                
    0000004
    ce qui n'empêche pas la proposition perl de fonctionner (même sous macos!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ echo -e 'aze\n' | sed 's/aze/bla/' | perl -pe 'chomp if eof' | od -c
    0000000    b   l   a  \n                                                
    0000004

  5. #5
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 293
    Points : 12 766
    Points
    12 766
    Par défaut
    Bonjour,

    Pour retirer les derniers "\n" de la dernière ligne s'ils existent (sous bash) :
    Ici, ça supprime tous les '\n' qui ce suivent à la fin du fichier (dernière ligne comprise).

    Pour les retirer tous (fichier complet), on ne met pas les guillemets:
    Cordialement.

  6. #6
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour

    Tout d'abord, merci de vos réponses.

    En faite le script utilisé est en batch et j'utilise des commandes unix. Ce saut de ligne est généré par la commande ls.

    Voici un extrait du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    call:-f f2 %2
    if defined r_val (
     echo %~nx0: Please wait...
     %ls% -lGg %2 | %findstr% -v "^d" | %findstr% -v "%f_exc%" | %tail% -n+2 > %2\%t_tmp%
     %cat% %2\%t_tmp% | %awk% -v var="total " "{sum+=$3} END {print var sum}" > %2\%i_txt%
     %cat% %2\%t_tmp% | %findstr% -v "%f_exc%" >> %2\%i_txt%
     %rm% %2\%t_tmp%
     set m_val=7
     call:-m
    )
    goto:eof
    J'ai bien entendu posté une demande dans le forum Batch mais c'est loin d'être évident

    Cependant, je peux tout à fait utiliser la commande sed, echo et/ou tr. Encore faut-il que j'arrive à trouver la syntaxe pour retirer ce satané saut de ligne
    .Olivier

  7. #7
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Tu serais peut être mieux avec powershell. A mon humble avis, le batch c'est pas génial.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 553
    Points : 19 393
    Points
    19 393
    Par défaut
    mais c'est affreux ! même masquées par tant de laideur, je perçois encore des choses que je proscris : ls, cat...

    si tu nous disais, dans un nouveau sujet, ce que tu veux faire, avant ton problème de ligne surnuméraire, on sera content de te permettre de ne plus faire de tels codes.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [Batch] Supprimer le dernier retour chariot d'un fichier
    Par Olivier Regnier dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 27/11/2017, 23h36
  2. [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
  3. [KSH] supprimer le dernier retour chariot d'un fichier
    Par Cj_Dal dans le forum Shell et commandes POSIX
    Réponses: 12
    Dernier message: 22/08/2013, 15h41
  4. Supprimer retour chariot dans un fichier CSV
    Par smain_inf dans le forum VBScript
    Réponses: 2
    Dernier message: 20/08/2008, 09h56
  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