Dado este arquivo:
$ 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
Eu gostaria de fazer um hard break em 70, mas também gostaria de fazer um hard refill. Tentei "dobrar", mas não recarregou:
$ 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" será recarregado, mas eu só consegui quebrar nos espaços, então não há garantia de quebrar exatamente em 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
Eu tentei "pr", mas parece apenas truncar a linha sem quebrar:
$ 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
Talvez esses comandos tenham alguma opção que estou perdendo, ou talvez a solução Awk ou Sed. Prefiro evitar soluções mais pesadas (Perl PHP Ruby).
Usando sed
Com GNU sed:
Com qualquer sed POSIX:
Usando awk
Com tr e dobra
O acima não produz uma nova linha à direita, mas podemos adicionar uma, se necessário, com
echo ""
:Isso não funcionará em todos os casos, mas deve cobrir a maioria dos casos de uso: