• BASH > Copier du texte d’un PDF

      Parfois, le texte d’un PDF ressemble à ça :

       

          Cette phrase est cou-
      pée en plusieurs césu-
      res.
      
          Pour y remédier, nous
      allons devoir avoir re-
      cours à un script.

       

      Et lorsqu’on le copie-colle, les tirets des césures sont également copiés :

       

      Cette phrase est cou-
      pée en plusieurs césu-
      res.
      Pour y remédier, nous
      allons devoir avoir re-
      cours à un script.

       

      Alors que l’on veut le texte formaté de cette façon :

       

      Cette phrase est coupée en plusieurs césures.
      
      Pour y remédier, nous allons devoir avoir recours à un script.

      LES ÉTAPES

      Il faut placer des repères à la fin de chaque ligne comportant un tiret de césure :

       

      sed 's/\([[:alpha:]]\)-$/\1@@@/' LeTexte
          Cette phrase est cou@@@
      pée en plusieurs césu@@@
      res. 
          Pour y remédier, nous
      allons devoir avoir re@@@
      cours à un script.

       

      Puis, on remplace le point final d’une phrase avec qqq. Cela indique la fin d’un paragraphe.

       

      sed 's/\([[:alpha:]]\)-$/\1@@@/;s/\.$/.qqq/' LeTexte
          Cette phrase est cou@@@
      pée en plusieurs césu@@@
      res.qqq
          Pour y remédier, nous
      allons devoir avoir re@@@
      cours à un script.qqq

       

      On ajoute un espace à chaque fin de ligne :

       

      sed 's/\([[:alpha:]]\)-$/\1@@@/;s/\.$/.qqq/;s/$/ /' LeTexte \
      Cette phrase est cou@@@
      pée en plusieurs césu@@@ 
      res.qqq
      Pour y remédier, nous
      allons devoir avoir re@@@
      cours à un script.qqq 

       

      On supprime les sauts de ligne :

       

      sed 's/\([[:alpha:]]\)-$/\1@@@/;s/\.$/.qqq/;s/$/ /' LeTexte | tr -d '\n'
      Cette phrase est cou@@@ pée en plusieurs césu@@@ res.qqq Pour y remédier, nous allons devoir avoir re@@@ cours à un script.qqq

       

      On supprimer les @@@ suivis d’un espace, et on remplace les qqq par deux sauts de ligne :

       

      sed 's/\([[:alpha:]]\)-$/\1@@@/;s/\.$/.qqq/;s/$/ /' LeTexte | tr -d '\n' \
      | sed 's/@@@ //g;s/qqq /\n\n/g'
      Cette phrase est coupée en plusieurs césures.
      
      Pour y remédier, nous allons devoir avoir recours à un script.
      

      SCRIPT FINAL

      Code final :

       

      #!/bin/bash
      xclip -o \
      | sed 's/\([[:alpha:]]\)-$/\1@@@/;s/\.$/\.qqq/;s/$/ /' \
      | tr -d '\n' \
      | sed 's/@@@ //g;s/qqq /\n\n/g' \
      | xclip -i
      exit

       

      Le script est couplé à xclip. Pour l’utiliser, il faut :

       

      1 - Copier ce que l’on veut dans le clipboard

      2 - Lancer le script

      3 - Clic-milieu pour coller

       

 

Aucun commentaire

 

Laissez un commentaire