Dada una cadena larga que debe mostrarse con un ancho de texto limitado, ¿hay una herramienta de línea de comando en * nix que convierta la cadena de una sola línea en una cadena de varias líneas con cada línea que no sea más larga que un ancho de texto dado?
Por ejemplo, dada la siguiente cadena
$ 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."
Me gustaría formatear algo así:
$ 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
fuente
fuente
echo $MYSTRING | fold -w 30
, ya que la-30
sintaxis no aparece en la página de manual de fold .fmt
. La diferencia entrefold
yfmt
es que sefold
ajustará en el ancho fijo, incluso dividiendo palabras y puede comenzar líneas con espacios en blanco. Si bien sefmt
ajustará cerca o debajo del ancho, no dividirá las palabras, las líneas no comenzarán con espacios en blanco y se pueden unir líneas cortas.fold
parece tener un comportamiento similar afmt
cuando-s
se usa la opción.Aquí hay un método que usa
sed
:fuente
.\{30\}
), con la misma cadena (&
), seguido de una nueva línea.El propósito completo de
fmt
(parte de los coreutils de GNU y otras versiones del IIRC se incluyeron con nixes que no son GNU *, por lo que es casi seguro que ya estén instalados) es reformatear los párrafos.Sin embargo, hay una herramienta aún mejor llamada
par
(para reformatear párrafo). Puede hacer todo lo quefmt
puede hacer, pero con muchas más opciones para controlar el formato de salida exacto.Una de las muchas cosas realmente buenas
par
es que es muy inteligente manejar las citas en correos electrónicos (incluso múltiples niveles de citas), muy útil ... Tengo mi .vimrc configurado para que presionar F5 envíe el párrafo actual a la par.Si no está empaquetado para su distribución (es para Debian y derivados, probablemente también para otros), puede encontrar el par en http://www.nicemice.net/par/
fuente
*nix
es solo una forma de decir "unix genérico o sistemas similares a unix" - data de un momento en que la palabra Unix era una marca registrada de AT&Tfold -s
es la respuesta más corta y mejor a tu pregunta.Sin embargo, a pesar de que esas herramientas de un solo propósito son buenas en algunos casos, en general, debe hacer que su editor haga esto.
En Emacs, puede modificar esto de la forma que desee. En cuanto a mí, lo uso
visual-line-mode
(aparece como unWrap
modo menor en la línea de modo) porque en el caso general, no quiero saltos de línea en ningún otro lugar que no sea al final de los párrafos.Pensé que diría la forma en que lo hago. No es "el" camino, pero es un camino; Como menciono las funciones y variables, su forma es juntarlas y automatizarlas para que funcionen para usted. (Esto es Emacs, pero para cualquier editor suficientemente avanzado, se podría escribir una publicación similar).
Dije que tengo las líneas visualmente ajustadas cuando escribo, y nunca las rompo manualmente. Como siempre, hay excepciones: por ejemplo, GNUS no enviará publicaciones a Usenet con líneas más allá de un cierto ancho (en caracteres). Entonces, yo uso
M-q
. En Emacs,M-q
ejecuta el comandofill-paragraph
. La variablefill-column
controla el ancho para el relleno. Como ejemplo, si escribo esto (en una sola línea)y luego uso Mq, obtengo
Con
justify-current-line
(el doble de dos líneas), obtienesPero descubrí que las personas rara vez usan fuentes monoespaciales para ver cosas, por lo que no tenía mucho sentido usarlo (aparte para mi propio placer visual). Si te gusta, puedes ajustar
fill-paragraph
para llenar y justificar al mismo tiempo. También podría tener Emacs hacer esto para usted, siempre, a medida que escribe:auto-fill-mode
. (Me pareció estresante, pero ese soy yo).Esto puede parecer mucho trabajo, y lo es; pero una vez que haya terminado (con esta y otras 1000 cosas) realmente puede disfrutar trabajando con las herramientas comportándose exactamente como lo desea.
fuente