将输出格式化为特定的行长度

将输出格式化为特定的行长度

因此,我有一些行很长的输出,我希望将其格式化为行宽不超过 80 列,但我不想拆分单词,因为它们在列限制内。

我试过

sed 's/.\{80\}/&\n/g' 

但存在拆分单词并使某些行以空格开头的问题。

我设法用 Vim 做到这一点,设置textwidth为 80,转到文件的开头并执行gqG格式化文本。但是 ¡ 宁愿使用sed,awk或类似的东西来将其包含在脚本中。

答案1

使用fold方法如下:

fold -s -w80 file

这只会在空格 ( -s) 处分割,使用 80 个字符的行宽 ( -w80)。所以它的作用与解决方案完全相同fmt,但它也允许中断任何省略选项时的字符-s

答案2

改用fmt

fmt --width=80 file

man fmt

-w, --width=WIDTH
              maximum line width (default of 75 columns)

答案3

下面提到的解决方案可能会有所帮助:

猫 文件名.txt | fmt -w 80 > 缩减文件名.txt

fmt - 简单的最佳文本格式化程序。

相关内容