Étant donné une longue chaîne qui doit être affichée avec une largeur de texte limitée, existe-t-il un outil de ligne de commande dans * nix qui convertit la chaîne à une seule ligne en une chaîne à plusieurs lignes, chaque ligne ne dépassant pas une largeur de texte donnée?
Par exemple, étant donné la chaîne suivante
$ MYSTRING="Call me Ishmael. Some years ago - never mind how long precisely - having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world."
Je voudrais formater un peu comme ceci:
$ echo $MYSTRING | special-format-command --width=30
Call me Ishmael. Some years ag
o - never mind how long precis
ely - having little or no mone
y in my purse, and nothing par
ticular to interest me on shor
e, I thought I would sail abou
t a little and see the watery
part of the world.
text-processing
Cory Klein
la source
la source
echo $MYSTRING | fold -w 30
, puisque la-30
syntaxe n'apparaît pas dans la page de manuel fold ?fmt
. La différence entrefold
etfmt
est que la lignefold
sera bouclée à la largeur fixe, séparant même les mots et pouvant commencer les lignes par des blancs. Bien quefmt
l'habillage soit proche ou inférieur à la largeur, il ne divise pas les mots, les lignes ne commencent pas par des blancs et des lignes courtes peuvent être jointes.fold
semble avoir un comportement similaire àfmt
lorsque l'-s
option est utilisée.Voici une méthode utilisant
sed
:la source
.\{30\}
), par la même chaîne (&
), suivi d'un retour à la ligne.Le but entier de
fmt
(une partie de GNU coreutils et IIRC d'autres versions ont été incluses avec des nix non-GNU *, est donc presque certain d'être déjà installé) est de reformater les paragraphes.Cependant, il existe un outil encore meilleur appelé
par
(pour le reformatage de paragraphe). Il peut toutfmt
faire, mais avec beaucoup plus d'options pour contrôler le format de sortie exact.L'une des nombreuses choses vraiment intéressantes
par
est qu'il est très intelligent de gérer les citations dans les e-mails (même plusieurs niveaux de citations) - très utile ... J'ai mon .vimrc configuré de sorte que le fait d'appuyer sur F5 envoie le paragraphe actuel via le par.S'il n'est pas empaqueté pour votre distribution (c'est pour debian et ses dérivés, probablement pour d'autres aussi), le par peut être trouvé à http://www.nicemice.net/par/
la source
*nix
est juste une façon de dire "systèmes génériques unix ou similaires à unix" - il date d'une époque où le mot Unix était une marque déposée d'AT & Tfold -s
est la réponse la plus courte et la meilleure à votre question.Cependant, aussi bons que soient ces outils à usage unique dans certains cas, en général, vous devriez demander à votre éditeur de le faire.
Dans Emacs, vous pouvez modifier cela comme vous le souhaitez. Quant à moi, j'utilise
visual-line-mode
(apparaît comme unWrap
mode mineur dans la ligne de mode) parce que dans le cas général, je ne veux pas de sauts de ligne ailleurs qu'à la fin des paragraphes.Je pensais que je dirais la façon dont je le fais. Ce n'est pas «la» voie, mais c'est une voie; comme je mentionne les fonctions et les variables, votre façon est de les assembler et de les automatiser pour les faire fonctionner pour vous. (Il s'agit d'Emacs, mais pour tout éditeur suffisamment avancé, un article similaire pourrait être écrit.)
J'ai dit que les lignes étaient visuellement enveloppées lorsque je saisissais et ne les cassais jamais manuellement. Comme toujours, il y a des exceptions: par exemple, GNUS n'enverra pas de messages à Usenet avec des lignes au-delà d'une certaine largeur (en caractères). Alors, j'utilise
M-q
. Dans Emacs,M-q
exécute la commandefill-paragraph
. La variablefill-column
contrôle la largeur de remplissage. Par exemple, si j'écris ceci (sur une seule ligne)puis utiliser Mq, je reçois
Avec
justify-current-line
(deux fois plus de deux lignes), vous obtenezMais, j'ai constaté que les gens utilisent rarement les polices monospaces pour afficher les choses, donc cela n'avait pas beaucoup de sens de les utiliser (à part pour mon propre plaisir de visualisation). Si vous l'aimez, vous pouvez modifier
fill-paragraph
pour remplir et justifier en même temps. Vous pouvez également Emacs faire pour vous, toujours, comme vous tapez:auto-fill-mode
. (J'ai trouvé cela stressant, mais c'est moi.)Cela peut sembler beaucoup de travail, et c'est; mais une fois que vous avez terminé (avec ceci et 1000 autres choses), vous pouvez vraiment profiter de travailler avec les outils se comportant exactement comme vous les aimez.
la source