Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[ADMIN] Comment extraire le texte d'une page man ? (résolu)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
Mr. T.
Guru
Guru


Joined: 26 Dec 2016
Posts: 477

PostPosted: Sat Sep 02, 2017 8:16 am    Post subject: [ADMIN] Comment extraire le texte d'une page man ? (résolu) Reply with quote

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
Back to top
View user's profile Send private message
Mr. T.
Guru
Guru


Joined: 26 Dec 2016
Posts: 477

PostPosted: Sat Sep 02, 2017 9:37 am    Post subject: Reply with quote

J'ai trouvé une réponse.

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

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

Code:
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.

Code:
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*


Code:
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?].

Code:
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.

Code:
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
Back to top
View user's profile Send private message
Mr. T.
Guru
Guru


Joined: 26 Dec 2016
Posts: 477

PostPosted: Sun Sep 03, 2017 1:08 pm    Post subject: Reply with quote

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.

Code:
/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 '{}' \;


  1. On utilise le logiciel man pour convertir les fichiers en unicode. Les noms des fichiers créés sont suffixés en .ansi.
  2. 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.
  3. On supprime les fichiers ayant un nom suffixé en .ansi (les fichiers contenant les séquences d'échappement ANSI).
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum