如何以特定的列大小换行?


141

我知道我可以使用类似的cat test.txt | pr -w 80方法将行换成80个字符的宽度,但这会在打印行的顶部和底部留出很多空间,并且在某些系统上不起作用

强制将长行文本文件以一定宽度换行的最佳方法是什么?

奖励积分,如果您可以防止其断言。

Answers:


176

你在找

fold -w 80 -s text.txt
  • -w表示文本的宽度,其中80是标准宽度。
  • -s告诉您在空格处而不是在文字处中断。

这是标准方法,但是还有其他系统需要“ -c”而不是“ -w”。


同样适用于OS X,但文件名必须在args之后。谢谢!
rdrey 2014年

2
附带说明一下,为了很好地格式化电子邮件以进行纯文本回复,我使用:fold -s -w 80 email.txt | sed 's/^.*$/> &/'
Marcello Romani

2
@MarcelloRomani,因为要加上两个字符,所以不应该使用78的宽度吗?
保姆2015年

1
嗯...我想是的。感谢您指出:)
Marcello Romani 2015年

2
请注意,foldURL fmt不会中断。
Skippy le Grand Gourou

51

另外fold,看看fmtfmt尝试智能地选择换行符以使文本看起来不错。它不会打断长字,而是仅用空格包裹。它还将连接相邻的行,这对散文有利,但对日志文件或其他格式的文本不利。


3
与折叠相比,我特别喜欢fmt -t
lkraav 2012年

15

1)保证带断字的固定线宽:

fold -w 80 <text.txt

2)保证固定的行宽,并具有非凡的断行功能(仅当一个行太大而无法容纳一个行时,该行才会断行):

fold -sw 80 <text.txt

3)保证固定的行宽而不会破坏任何单词(如果单词太大而无法容纳在一行中,那么它仍然会保留原样,因此最后某些行的大小可能会超出您的需要):

fmt -w 80 <text.txt

被低估的答案。在大多数系统上可用。好东西。
Merc

11

另一个(鲜为人知的)工具可以满足您的需求,它wrap来自GNU Talkfilters

wrap -w 80 < textfile

另外(主题外):

但这会在印刷线的顶部和底部留出很多空间

-t在调用时添加pr以省略标题/尾部:

   -t, --omit-header
          omit page headers and trailers

5

有关更多格式选项,请参阅-http par: //www.nicemice.net/par/


2
当前该网站已关闭,有Internet存档和Google的缓存,但这仍然说明了为什么重要的不仅仅是发布链接,您还可以至少发布官方文档中的示例。
phk

-1
fold -w 100 -s text.txt

为我工作,因为我需要将每一行拆分为100个字符


1
您的答案补充了其他人没有的意思吗?
Sheljohn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.