Je sais que je peux utiliser quelque chose comme cat test.txt | pr -w 80
pour encapsuler les lignes sur 80 caractères de large, mais cela met beaucoup d'espace en haut et en bas des lignes imprimées et cela ne fonctionne pas correctement sur certains systèmes
Quelle est la meilleure façon de forcer un fichier texte avec de longues lignes à être enveloppé à une certaine largeur?
Points bonus si vous pouvez l'empêcher de casser des mots.
Tu recherches
fold -w 80 -s text.txt
C'est la manière standard , mais il existe d'autres systèmes qui nécessitent "-c" au lieu de "-w".
En plus de fold
, jetez un œil à fmt
. fmt
essaie de choisir intelligemment les sauts de ligne pour donner une belle apparence au texte. Il ne casse pas de longs mots, il ne s'enroule que par des espaces. Il rejoindra également les lignes adjacentes, ce qui est bon pour la prose mais mauvais pour les fichiers journaux ou tout autre texte formaté.
1) largeur de ligne fixe assurée avec rupture de mot:
fold -w 80 <text.txt
2) largeur de ligne fixe garantie avec une rupture de mot extraordinaire (un mot n'est cassé que s'il est trop grand pour tenir dans une ligne):
fold -sw 80 <text.txt
3) promettant une largeur de ligne fixe sans aucune rupture de mot (si Word est trop grand pour tenir dans une ligne, il est toujours laissé tel quel, donc finalement certaines lignes peuvent être plus grandes que ce dont vous avez besoin):
fmt -w 80 <text.txt
Un autre outil (moins connu) qui fait ce que vous voulez est wrap
from GNU Talkfilters :
wrap -w 80 < textfile
Aussi (hors sujet):
mais cela met beaucoup d'espace en haut et en bas des lignes imprimées
ajouter -t
lors de l'appel de pr
pour omettre les en-têtes/remorques:
-t, --omit-header
omit page headers and trailers
Et pour plus d'options de formatage, regardez par
- http://www.nicemice.net/par/