# [ADMIN] Comment extraire le texte d'une page man ? (résolu)

## Mr. T.

Bonjour, je souhaite constituer un manuel au format "GNU Info" en dupliquant le texte d'une page "man". 

Comment peut-on procéder ?Last edited by Mr. T. on Sat Sep 02, 2017 9:38 am; edited 1 time in total

----------

## Mr. T.

J'ai trouvé une réponse. 

Argh !!! Une reformulation est nécessaire, lisez plutôt le post suivant.  :Mr. Green: 

Édition :  Sujet approprié sur stackoverflow. [Convert all Linux man pages to text / html or markdown]

```
helecho $ for file in $(ls -1 ./man1/) ; do 

> groff -mandoc -T utf8 ./man1/$file > ../tmp/man1/$file

> done

helecho $
```

Édition :  On peut supprimer partiellement (euh !?) les séquences d'échappement apparaissant dans les fichiers convertis au format UTF-8.

```
helecho $ echo "Un texte qui servira ^[[1md'exemple^[[0m pour le test avec sed." > ./test

helecho $ cat test

Un texte qui servira ^[[1md'exemple^[[0m pour le test avec sed.

helecho $ sed -i.back -e "s/\^\[\[[0-9]\+m//g" test

helecho $ cat test

Un texte qui servira d'exemple pour le test avec sed.

helecho $ rm test*
```

```
helecho $ file ../tmp/man1/git-add.1

../tmp/man1/git-add.1: UTF8 Unicode text, with escape sequences

helecho $ sed -i.back -e "s/\^\[\[[0-9]\+m//g" ../tmp/man1/git-add.1

helecho $ emacs ../tmp/man1/git-add.1

# Les séquences d'échappement n'ont pas été supprimé. On remarque que Emacs colore "les caractères" ^[

helecho $ sed -i.back -e "s/\[[0-9]\+m//g" ../tmp/man1/git-add.1

helecho $ emacs ../tmp/man1/git-add.1

# Les séquences d'échappement sont partiellement supprimés. En effet, "les caractères" ^[ sont conservés.
```

Le texte est plus lisible sans les séquences d'échappement.

Édition :  Sujet approprié sur stackoverflow [How to remove ^[ and all of the escape sequences in a file using linux shell scripting?].

```
helecho $ sed -i .back -e "s/\x1b//g" ../tmp/man1/git-add.1 
```

Édition :  Il est préférable de convertir les pages de manuel sans utiliser l'option -mandoc lorsqu'on souhaite exploiter les caractères du texte.

Il semblerait que ce formatage (avec l'option mandoc) introduisent des caractères de contrôle améliorant l'affichage à l'écran.

```
helecho $ groff -T utf8 git.1 > git.1.2

helecho $ ansifilter git.1.2 > git.1.2.3         # app-text/ansifilter

helecho $ cat git.1.2.3 | hexdump -C | less

helecho $ sed -i .back -e "s/\xe2\x88\x92//g" git.1.2.3  # suppression de "\u2212" 
```

Je ne connais pas de solution globale permettant de supprimer ces caractères de contrôle. De toute façon, je devrais éditer ces fichiers "manuellement".

Édition : Certains caractères ne s'affichent pas à cause de la fonte utilisée dans la console (cf. le tutoriel francophone sur tldp.org et l'article Wiki sur les fontes).

Remarque : Je ne pensais pas que la réponse aurait été aussi longue ! Je serais succint la prochaine fois.

Édition :  Je me suis aperçu qu'il est préférable d'identifier les "caractères Unicode" avant de les supprimer (en utilisant une table de caractères Unicode).

Cdlt, helecho.Last edited by Mr. T. on Mon Sep 04, 2017 5:42 pm; edited 2 times in total

----------

## Mr. T.

Le procédé exposé dans le post précédent n'est vraiment pas convenable. 

On peut convertir la page de manuel en unicode avec les instructions suivantes en supposant que les pages de manuel (décompressées) sont placées dans le répertoire /tmp/man1. 

On utilise le logiciel ansifilter (app-text/ansifilter) pour supprimer les séquences d'échappement relatives à la console virtuelle.

```
/tmp $ for file in $(ls -1 man1); do 

> _file=$(echo $file | sed -e "s/\(.*\)/\1\.ansi/g"); 

> man -Tutf8 man1/$file > man1/$_file; 

> done

/tmp $ for file in $(ls -1 man1); do 

> _file=$(echo $file | sed -e "s/\(.*\)\.ansi/\1/g"); 

> ansifilter man1/$file > man1/$_file;

> done

/tmp $ find ~/man/man1/ -name "*.ansi" -exec rm '{}' \;
```

On utilise le logiciel man pour convertir les fichiers en unicode. Les noms des fichiers créés sont suffixés en .ansi.

On utilise le logiciel ansifilter pour supprimer les séquences d'échappement ANSI. Les noms des fichiers sont dérivés des fichiers existant mais ne sont pas suffixés en .ansi.

On supprime les fichiers ayant un nom suffixé en .ansi (les fichiers contenant les séquences d'échappement ANSI).

----------

