cat test.txt | pr -w 80
的格式将行换成80个字符的宽度,但这会在打印行的顶部和底部放置大量空间,并且在某些系统上不起作用强制将长行文本文件以一定宽度换行的最佳方法是什么?
如果可以防止断字,则奖励积分。
#1 楼
您正在寻找fold -w 80 -s text.txt
-w指示文本的宽度,其中80是标准宽度。
-s指示在空格处中断,而不是用言语表达。
这是标准方法,但是在其他系统中,则需要“ -c”而不是“ -w”。
#2 楼
除了fold
之外,还要看看fmt
。 fmt
尝试智能地选择换行符以使文本看起来不错。它不会打断长字,而是仅用空格包裹。它还会连接相邻的行,这对散文有利,但对日志文件或其他格式的文本不利。评论
与fold相比,我特别喜欢fmt -t
–lkraav
2012年12月24日在21:26
#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.
评论
被低估的答案。在大多数系统上可用。好一个。
– Merc
16-10-4在2:09
我真的很高兴看到一个带有不同选项的真实文本示例。我一直在尝试编写Python版本的wrap,但是对长字处理不满意。具有比指定单词长的换行和fwt选项非常好。
–bballdave025
20年9月4日在18:31
#4 楼
另一个(鲜为人知的)工具可以满足您的需求,它是来自GNU Talkfilters的wrap
:wrap -w 80 < textfile
也(不在主题范围内):
,但这会在打印行的顶部和底部留出大量空间
调用
-t
来省略标题/尾部时添加pr
: -t, --omit-header
omit page headers and trailers
#5 楼
有关更多格式选项,请参阅par
-http://www.nicemice.net/par/ 评论
当前该网站已关闭,有Internet存档和Google的缓存,但这仍然说明了为什么重要的不仅仅是发布链接,您还可以至少发布官方文档中的示例。
–phk
16 Dec 27 '16:31
#6 楼
fold -w 100 -s text.txt
对我有用,因为我需要将每一行拆分成100个字符
评论
您的答案还补充了其他人没有的答案?
–乔纳森·H
18年4月7日在16:53
评论
附带说明一下,为了很好地格式化电子邮件以进行纯文本回复,我使用:fold -s -w 80 email.txt | sed's /^.*$/>&/'
– Marcello Romani
2015年2月10日在21:10
@MarcelloRomani,因为要加上两个字符,所以不应该使用78的宽度吗?
–保姆
2015年2月26日在14:59
嗯...我想是的。感谢您指出了这一点 :)
– Marcello Romani
2015年2月27日,12:35
是否有类似fold之类的东西,可让您指定要包装的字符串?
–将
17年2月1日在2:30
请注意,折叠会破坏网址,而fmt不会。
–Skippy le Grand Gourou
17 Mar 28 '17 at 11:05