Como quebrar o texto em um determinado tamanho de coluna?


142

Sei que posso usar algo como cat test.txt | pr -w 80quebrar linhas com 80 caracteres de largura, mas isso coloca muito espaço na parte superior e inferior das linhas impressas e não funciona em alguns sistemas

Qual é a melhor maneira de forçar um arquivo de texto com linhas longas a ser quebrado em uma determinada largura?

Pontos de bônus se você puder impedir que ele quebre palavras.

Respostas:


177

Você está procurando

fold -w 80 -s text.txt
  • -w informa a largura do texto, onde 80 é padrão.
  • -s diz para quebrar em espaços, e não em palavras.

Essa é a maneira padrão , mas existem outros sistemas que precisam de "-c" em vez de "-w".


Também funciona no OS X, mas o nome do arquivo precisa estar após os argumentos. Obrigado!
— Rdrey

2
Em uma nota lateral, para formatar bem os emails para resposta somente em texto, eu uso:fold -s -w 80 email.txt | sed 's/^.*$/> &/'
— Marcello Romani

2
@ MarcelloRomani, você não deve usar uma largura de 78, já que está acrescentando dois caracteres?
— 26915 nanny

1
Hmm ... acho que sim. Obrigado por apontar que fora :)
— Marcello Romani

2
Observe que foldquebra URLs, enquanto fmtnão.
— Skippy le Grand Gourou

51

Além de fold, dê uma olhada fmt. fmttenta escolher as quebras de linha de maneira inteligente para fazer com que o texto fique bem Não quebra palavras longas, mas envolve apenas espaços. Ele também juntará linhas adjacentes, o que é bom para a prosa, mas ruim para os arquivos de log ou outro texto formatado.


3
I especialmente FMT -t comparado a dobrar
— lkraav

15

1) largura fixa garantida da linha com quebra de palavras:

fold -w 80 <text.txt

2) largura fixa garantida da linha com quebra extraordinária de palavras (uma palavra só será quebrada se for muito grande para caber em uma linha):

fold -sw 80 <text.txt

3) prometer largura de linha fixa sem quebra de palavra (se a palavra for muito grande para caber em uma linha, ela ainda será deixada como está; portanto, finalmente, algumas linhas podem ter um tamanho maior do que o necessário):

fmt -w 80 <text.txt

Resposta subestimada. Disponível na maioria dos sistemas. Agradável.
— Merc

11

Outra ferramenta (menos conhecida) que faz o que você quer é wrapdo GNU Talkfilters :

wrap -w 80 < textfile

Também (fora do tópico):

mas isso coloca muito espaço na parte superior e inferior das linhas impressas

adicionar -tao invocar prpara omitir cabeçalhos / trailers:

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

5

E para mais opções de formatação, consulte par- http://www.nicemice.net/par/


2
Atualmente, o site está fora do ar, existe o Internet Archive e o cache do Google, mas ainda assim mostra por que é importante postar mais do que apenas links; você pode pelo menos ter postado os exemplos na documentação oficial.
— Phd

-1
fold -w 100 -s text.txt

trabalhou para mim como eu preciso dividir cada linha até 100 caracteres


1
O que sua resposta acrescenta que as outras não?
— Sheljohn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.