Formata a saída para um comprimento de linha específico

5

Portanto, tenho algumas saídas com linhas muito longas e quero formatá-las em linhas com no máximo 80 colunas, mas não quero dividir as palavras porque elas estão no limite da coluna.

Eu tentei

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

mas tem o problema de dividir palavras e fazer algumas linhas começarem com um espaço.

Eu consegui fazer isso com o Vim, definindo textwidth para 80, indo para o início do arquivo e executando gqG para formatar o texto. Mas é preferível fazê-lo com sed , awk ou algo semelhante para incluí-lo em um script.

    
por Msegade 23.07.2014 / 13:12

3 respostas

6

Use fmt :

fmt --width=80 file

De man fmt :

-w, --width=WIDTH
              maximum line width (default of 75 columns)
    
por 23.07.2014 / 13:17
5

Use fold da seguinte forma:

fold -s -w80 file

Isso só será dividido no espaço em branco ( -s ), usando uma largura de linha de 80 caracteres ( -w80 ). Portanto, ele faz exatamente o mesmo que as soluções fmt , mas também permite quebrar em qualquer caractere ao omitir a opção -s .

    
por 17.10.2016 / 18:38
2

A solução abaixo mencionada pode ajudar:

cat file_name.txt | fmt -w 80 > reduced_file_name.txt

fmt - formatador de texto ideal simples.

    
por 23.07.2014 / 13:19