[sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe (résolu)
[sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe (résolu)
Je cherche une commande shell pour afficher le texte contenu dans un fichier avec un nombre de caractères maximum par ligne, sans couper les mots.
C'est pour ne plus me prendre la tête avec le formatage de certains fichiers texte pour afficher de l'aide dans un terminal. Du coup je pourrais écrire des paragraphes plutôt que de gérer le formatage à la main.
Si vous avez une piste/solution je suis preneur.
C'est pour ne plus me prendre la tête avec le formatage de certains fichiers texte pour afficher de l'aide dans un terminal. Du coup je pourrais écrire des paragraphes plutôt que de gérer le formatage à la main.
Si vous avez une piste/solution je suis preneur.
Dernière modification par bobo le ven. 29 janv. 2016, 13:02, modifié 1 fois.
dwm — BÉPO — vim — “more is less !”
Re: [sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe
Y'a vim qui le propose : http://vim.wikia.com/wiki/Automatic_word_wrapping
J'ai pas mon PC sous la main, lais il y a une commande pour reformater un paragraphe déjà écrit.
J'ai pas mon PC sous la main, lais il y a une commande pour reformater un paragraphe déjà écrit.
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
- benjarobin
- Maître du Kyudo
- Messages : 17235
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe
Tout simplement la commande :
Si tu n'as pas envie d'avoir tout le "bordel" qui va avec ce paquet (dommage de ne pas l'avoir splitté), tu peux installer wrap-git qui a plus d'option (ce n'est pas le même programme)
wrap
dans le paquet talkfiltersSi tu n'as pas envie d'avoir tout le "bordel" qui va avec ce paquet (dommage de ne pas l'avoir splitté), tu peux installer wrap-git qui a plus d'option (ce n'est pas le même programme)
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe
Super benjarobin ! Grâce à ta piste j'ai trouvé fold (qui épargne un pipe). Je cherchais une ligne de commande adéquate pour rentrer dans ce script :
Celle-ci pourrait être pas mal :
L'idéal serait d'avoir une première étape pour rassembler les paragraphes. Si vous aviez une idée à ce sujet aussi, j'aurais un début de truc que je pourrais exécuter dans ma procedure de release pour mon projet.
Code : Tout sélectionner
#!/bin/sh
if [ ! "$(dirname "$0")" = '.' ]; then
echo "ERROR: this script must be run locally"
fi
CPL=80
for file in * ; do
if [ -d $file ]; then
echo "SKIPPED (dir) $file"
elif [ -x $file ]; then
echo "SKIPPED (exec) $file"
else
echo "REFORMATED $file"
fi
done
Code : Tout sélectionner
fold -w 80 -s $file > $file
dwm — BÉPO — vim — “more is less !”
Re: [sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe
Illustration du propos :
Code : Tout sélectionner
$ echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | fold -w 20
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx
Code : Tout sélectionner
$ echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | fold -w 20 | fold -w 40
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx
dwm — BÉPO — vim — “more is less !”
- benjarobin
- Maître du Kyudo
- Messages : 17235
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe
Ne jamais lire un fichier et écrire dans le même fichier. Tu pourrais avoir des trucs bien étranges...
Tu dois passer par un fichier temporaire.
Tu dois passer par un fichier temporaire.
Cela veut dire quoi ? Tout mettre sur la même ligne puis appliquer fold ?L'idéal serait d'avoir une première étape pour rassembler les paragraphes.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe
Je dirais plus tout mettre sur « la même ligne sauf s'il y a une ligne blanche (critère pour distinguer les paragraphes) ». En fait, à la réflexion il y aurait aussi d'autre exceptions pour les conventions que j'utilise actuellement. Si je veux faire plus malin, il va falloir passer par du perl, je le crains.benjarobin a écrit :Tout mettre sur la même ligne puis appliquer fold ?
Sinon il va falloir que je modifie ma façon de rédiger mes fichiers texte. Le markdown a l'air pas mal comme approche, du coup tu peux imaginer les exceptions qu'il faudrait…
Je vais marquer le sujet comme résolu. Merci.
dwm — BÉPO — vim — “more is less !”
- benjarobin
- Maître du Kyudo
- Messages : 17235
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe (résolu)
Il suffit donc de remplacer un saut de ligne par un espace uniquement si le saut de ligne n'est pas suivi par un autre saut de ligne. Je pense que ceci devrait être assez triviale à faire avec perl / awk (mais je ne les connais pas assez)
Tu peux aussi le faire avec ce genre d'horreur : Ou plus compacte
Tu peux aussi le faire avec ce genre d'horreur :
Code : Tout sélectionner
sed -e ':a' -e 'N' -e '$!ba' -r -e 's|([^\n ]) *\n *([^\n ])|\1 \2|g'
Code : Tout sélectionner
sed -r ':a;N;$!ba;s|([^\n ]) *\n *([^\n ])|\1 \2|g'
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe (résolu)
Voici mon script pour reformater mes fichiers texte d'aide :
https://git.framasoft.org/bobo/dwm-cust ... eformat.sh
Dans la fonction reformat() on trouve une série de 7 one-liners perl
https://git.framasoft.org/bobo/dwm-cust ... eformat.sh
Dans la fonction reformat() on trouve une série de 7 one-liners perl
dwm — BÉPO — vim — “more is less !”
- benjarobin
- Maître du Kyudo
- Messages : 17235
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe (résolu)
Ceci est inutile
Le fichier temporaire ne devrait pas être hardcodé, mais tu devrait utiliser la fonction
| cat > ...
ceci peut être remplacé par > ...
Le fichier temporaire ne devrait pas être hardcodé, mais tu devrait utiliser la fonction
mktemp
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [sh] cherche commande pour afficher le contenu d'un fichier avec CPL fixe (résolu)
J'ignore ce flag de shellcheck pour conserver un format identique pour toutes les modifs' avec un pipe à la fin. Il est alors facile de commenter une ligne pour du debug.benjarobin a écrit :Ceci est inutile| cat > ...
ceci peut être remplacé par> ...
Ah, il faut que je regarde ça. Merci pour la piste. J'ai reçu un mail salé d'un mec de Suckless qui avait regardé le code de ma version 0.1 de dwm-custom. À ma réponse il m'a orienté sur quelques ressources (shellcheck, checkbashisms, http://pubs.opengroup.org/onlinepubs/96 ... #tag_18_10). Ça m'a bien aidé, mais il y a encore de la marge de progressionbenjarobin a écrit :Le fichier temporaire ne devrait pas être hardcodé, mais tu devrais utiliser la fonctionmktemp
dwm — BÉPO — vim — “more is less !”