Unwrap : script pour GEdit

18 05 2009

Voici un petit script qui va vous permettre de joindre plusieurs lignes ensembles dans GEdit.

Exemple

Si vous utilisez XPdf pour copier-coller du texte (voir précédent billet), et que vous colliez le texte dans GEdit, vous aurez des choses ressemblant à ça :

             Pour ces visites, la réser-
             vation auprès du Pôle
Patrimoine de la Ville de Rouen au
02 32 08 31 01 est obligatoire.
Les billets doivent impérativement
être retirés et payés à l'avance (chè-
ques ou espèces).

Observations :

  • il y a des retours chariots à chaque ligne,
  • il y a des césures,
  • il y a des espaces en début de ligne.

Le script va permettre d’obtenir ceci :

Pour ces visites, la réservation auprès du Pôle Patrimoine de la Ville de Rouen au 02 32 08 31 01 est obligatoire. Les billets doivent impérativement être retirés et payés à l’avance (chèques ou espèces).

Les retours chariots, les espaces en début de ligne et les césures ont disparu.

Installation

Pour installer le script, allez dans le menu Outils → Outils externes. Créez un nouvel outil :

Installation et configuration de l’outil externe Unwrap

Installation et configuration de l’outil externe Unwrap

Caractéristiques :

  • Description : Joint plusieurs lignes en une seule
  • Touche de raccourci : <Control>j
  • Commande(s) : le script trouvé à la section suivante
  • Entrée : Sélection actuelle
  • Sortie : Remplacer la sélection actuelle
  • Applicabilité : Tous les documents

Script

#!/bin/sh
sed 's/[[:blank:]]+$//' | tr "\n" "|" | sed 's/-| *//g;s/|/ /g;s/    / /g;s/   / /g;s/  / /g'

Il s’agit d’une succession de pipe :

  • sed ‘s/[[:blank:]]+$//’ : supprime les espace et tabulations en fin de ligne,
  • tr « \n » « | » : remplace tous les retours chariots par un |,
  • sed ‘s/-| *//g;s/|/ /g;s/    / /g;s/   / /g;s/  / /g’ : ensemble de commandes sed

    • s/-| *//g : supprime les – des césures
    • s/|/ /g : transforme les | (anciennement retour à la ligne) en espaces
    • s/    / /g : transforme 4 espaces en un
    • s/   / /g : transforme 3 espaces en un
    • s/  / /g : transforme 2 espaces en un

Notes :

  • on remplace les retours chariots (\n) par des | afin de n’obtenir qu’une seule ligne pouvant être traitée par sed (sed travaille à la ligne),
  • je n’ai pas réussi à remplacer des séries d’espaces par un seul, j’ai donc rusé en remplaçant 4 espaces consécutifs par un, puis 3 par un puis 2 par un. Pas très propre mais suffisant pour le boulot à réaliser.

Actions

Information

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s




%d blogueurs aiment cette page :