鉴于此文件:
$ cat file
alfa bravo charlie delta echo foxtrot golf hotel india juliet kilo lima mike
november oscar papa quebec romeo sierra tango
uniform_victor_whiskey_xray yankee zulu
我想硬断70,但我也想硬补。我试过“折叠”,但它没有重新填充:
$ fold -w 70 file
alfa bravo charlie delta echo foxtrot golf hotel india juliet kilo lim
a mike
november oscar papa quebec romeo sierra tango
uniform_victor_whiskey_xray yankee zulu
“fmt”会重新填充,但我只能让它在空格处中断,所以不能保证恰好在 70 处换行:
$ fmt file
alfa bravo charlie delta echo foxtrot golf hotel india juliet
kilo lima mike november oscar papa quebec romeo sierra tango
uniform_victor_whiskey_xray yankee zulu
我试过“pr”,但它似乎只是截断了这条线而不换行:
$ pr -t -W 70 file
alfa bravo charlie delta echo foxtrot golf hotel india juliet kilo lim
november oscar papa quebec romeo sierra tango
uniform_victor_whiskey_xray yankee zulu
也许这些命令有一些我遗漏的选项,或者可能是 Awk 或 Sed 解决方案。我宁愿避免更重的解决方案(Perl PHP Ruby)。
使用 sed
使用 GNU sed:
使用任何 POSIX sed:
使用 awk
使用 tr 和 fold
以上不会产生尾随换行符,但如果需要,我们可以添加一个
echo ""
:这不会在所有情况下都有效,但它应该涵盖大多数用例: