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 :

Sed : supprimer saut de page ^L


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 55
    Par défaut Sed : supprimer saut de page ^L
    Bonjour

    je suis sous centos 5.3 et j'utilise bash.

    Je voudrai supprimer la dernière ligne d'un fichier si cette dernière contient le
    caractère saut de page ^L

    j'ai tenté de regarder la piste sed mais je n'arrive pas à lui faire reconnaitre
    le saut de page :

    sed '/\^L/d' fichier ne fonctionne pas.

    Quelqu'un aurait il une idée ?

    Merci

  2. #2
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Par défaut
    Bonjour,

    Le saut de page ne correspond-il pas "\f" ???

    Essaie avec :
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  3. #3
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 55
    Par défaut
    Super ca fonctionne

    J'avai fais une fixation sur ^L

    Par contre j'arrive pas a voir ce qu'il faut faire pour supprimer la dernière ligne (uniquement) si elle correspond a ce motif.

    Ex :

    A
    B
    \f
    C
    D
    \f

    Je veux obtenir

    A
    B
    \f
    C
    D

    Merci d'avance

  4. #4
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Voici une ligne qui devrait fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{if (lastLine) print lastLine; lastLine=$0} END {if (lastLine != "\f") print}' fichier_entree > fichier_sortie

  5. #5
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 55
    Par défaut
    Merci, ca fonctionne parfaitement

    Par contre je comprend pas grand chose a awk, et vu les quelques tutos que j'ai
    regardé sur le net ... ca me promet quelques heures de lectures

  6. #6
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    C'est pas hyper compliqué puisque j'y arrive:
    pour chaque ligne de fichier_entree, awk exécutera ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (lastLine) print lastLine; lastLine=$0
    C'est-à-dire que si la variable lastLine existe, il faut l'imprimer. Puis on assigne la ligne courante ($0) à lastLine. Autrement dit, on imprime le fichier avec une ligne de retard: donc tout le fichier sauf la dernière ligne.

    Ensuite vient le traitement final, une fois que toutes les lignes sont travaillées. C'est la fonction de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    END {if (lastLine != "\f") print}
    Si la dernière ligne travaillée, donc la dernière ligne du fichier (celle qui n'est pas encore imprimée), n'est pas "\f", alors on l'imprime.

    Toutes les impressions, au lieu de les envoyer à l'écran, on les capture pour les envoyer dans fichier_sortie grâce à:
    Facile, non?

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

Discussions similaires

  1. [ODS PDF]Supprimer sauts de page en gardant titres
    Par Filippo dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 20/04/2017, 10h53
  2. Supprimer saut de page automatique
    Par lecteur1001 dans le forum Mise en forme
    Réponses: 12
    Dernier message: 23/10/2009, 11h58
  3. sed : supprimer saut de ligne
    Par michaeljeru dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 12/09/2008, 16h52
  4. Réponses: 2
    Dernier message: 18/04/2008, 21h41
  5. [VB6]supprimer un saut de page dans Word
    Par Yal17 dans le forum VB 6 et antérieur
    Réponses: 25
    Dernier message: 14/06/2006, 12h21

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