我知道我可以使用类似cat test.txt | pr -w 80
将行换行为 80 个字符宽的方法,但这会在打印行的顶部和底部留下大量空间,并且在某些系统上无法正常工作
强制长行文本文件以一定宽度换行的最佳方法是什么?
如果你能阻止它破词,那就加分了。
答案1
您正在寻找
fold -w 80 -s text.txt
- -w 表示文本的宽度,其中 80 是标准宽度。
- -s 告诉在空格处中断,而不是在单词处中断。
这是标准方式,但还有其他系统需要“-c”而不是“-w”。
答案2
另外fold
,看看fmt
。fmt
尝试智能地选择换行符以使文本看起来更好。它不会破坏长单词,而是仅用空格换行。它还会连接相邻的行,这对散文有好处,但对日志文件或其他格式化文本不利。
答案3
$ cat shxp.txt
O, they have lived long on the alms-basket of words, I marvel thy
master hath not eaten thee for a word; for thou art not so long by the
head as honorificabilitudinitatibus: thou art easier swallowed than a
flap-dragon.
1) 确保固定行宽并断字:
fold -w 20 <shxp.txt
O, they have lived l
ong on the alms-bask
et of words, I marve
l thy master hath no
t eaten thee for a w
ord; for thou art no
t so long by the hea
d as honorificabilit
udinitatibus: thou a
rt easier swallowed
than a flap-dragon.
2) 确保固定的行宽和非凡的断字功能。仅当单词太大而无法排成一行时,该单词才会被破坏:
fold -sw 20 <shxp.txt
O, they have lived
long on the
alms-basket of
words, I marvel thy
master hath not
eaten thee for a
word; for thou art
not so long by the
head as
honorificabilitudini
tatibus: thou art
easier swallowed
than a flap-dragon.
3) 承诺固定行宽,没有任何断字。如果单词太大而无法容纳在一行中,它仍然保持原样,所以最后有些行的大小可能比您需要的大:
fmt -w 20 <shxp.txt
O, they have
lived long on the
alms-basket of
words, I marvel
thy master hath
not eaten thee
for a word; for
thou art not so
long by the head as
honorificabilitudinitatibus:
thou art easier
swallowed than
a flap-dragon.
请注意,fmt
与 不同的是,它还尝试平衡参差不齐的段落线fold -s
。
4)也许,由于程序内部使用了特殊的标记语言和格式化实用程序,这是解决问题的最复杂的印刷方法man
。额外定制的巨大可能性:
2>/dev/null nroff <(echo .pl 1 ; echo .ll 20) shxp.txt
O, they have lived
long on the alms‐
basket of words, I
marvel thy master
hath not eaten thee
for a word; for thou
art not so long by
the head as honori‐
ficabilitudinitati‐
bus: thou art easier
swallowed than a
flap‐dragon.
.pl 1
罗夫标记将页面高度设置为单行,从而有效地禁用分页。
.ll 20
将行长度设置为 20 个字符。
将标记放在单独的文件中将简化命令:
$ cat markup.roff
.pl 1
.ll 20
$ 2>/dev/null nroff markup.roff shxp.txt
为了nroff
使用 Unicode,可以使用以下命令预先转换文本preconv
:
$ 2>/dev/null nroff markup.roff <(preconv shxp.txt)
答案4
有关更多格式选项,请查看par
--http://www.nicemice.net/par/