O comando ‘fold’

fold-1_abertura.png

O comando fold é um daqueles programas desconhecidos que sempre são instalados¹, que acabamos descobrindo por acaso e que depois ficamos nos perguntando como conseguíamos viver sem. 🙂

Basicamente o fold serve para quebrar as linhas de um arquivo texto para fazê-lo “caber” corretamente na largura da sua tela, impressora ou mesmo então para uma página web — sim, é o que uso para arrumar as saídas dos comandos para publicar aqui,

(¹) Ele integra o pacote GNU core utilities.

Por exemplo, o cat desconsidera totalmente a largura da tela ao exibir o conteúdo de um arquivo texto — no caso o primeiro parágrafo do Lorem ipsum.

$ cat lorem_ipsum.txt 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec aliquam elit vel diam tincidunt sodales. In lacinia hendrerit ante sit amet suscipit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec scelerisque nisl sit amet nisi malesuada dictum. Curabitur a lectus eros. In et arcu in sem lacinia commodo non sed mauris. Nam consectetur feugiat mollis. Mauris a tempus mauris. Ut non facilisis est, sed auctor est. Fusce eget velit aliquam, semper mi ut, laoreet risus. Suspendisse sed lacus id massa dapibus scelerisque eu at velit. Aliquam vitae leo in libero maximus dictum id quis lacus.

Porém, utilizando o fold a saída será devidamente formatada para uma “tela” de, no caso, 80 colunas de largura.

$ fold lorem_ipsum.txt 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec aliquam elit vel 
diam tincidunt sodales. In lacinia hendrerit ante sit amet suscipit. Class apten
t taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
 Donec scelerisque nisl sit amet nisi malesuada dictum. Curabitur a lectus eros.
 In et arcu in sem lacinia commodo non sed mauris. Nam consectetur feugiat molli
s. Mauris a tempus mauris. Ut non facilisis est, sed auctor est. Fusce eget veli
t aliquam, semper mi ut, laoreet risus. Suspendisse sed lacus id massa dapibus s
celerisque eu at velit. Aliquam vitae leo in libero maximus dictum id quis lacus
.

Ainda não está bom, talvez se a “tela” pudesse ser um pouco menor? Talvez com 70 colunas de largura.

$ fold --width=70 lorem_ipsum.txt 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec aliquam
 elit vel diam tincidunt sodales. In lacinia hendrerit ante sit amet s
uscipit. Class aptent taciti sociosqu ad litora torquent per conubia n
ostra, per inceptos himenaeos. Donec scelerisque nisl sit amet nisi ma
lesuada dictum. Curabitur a lectus eros. In et arcu in sem lacinia com
modo non sed mauris. Nam consectetur feugiat mollis. Mauris a tempus m
auris. Ut non facilisis est, sed auctor est. Fusce eget velit aliquam,
 semper mi ut, laoreet risus. Suspendisse sed lacus id massa dapibus s
celerisque eu at velit. Aliquam vitae leo in libero maximus dictum id 
quis lacus.

Ótimo¹! Só ficaria melhor se as palavras não ficassem quebradas entre as linhas.

$ fold --width=70 --spaces lorem_ipsum.txt 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec 
aliquam elit vel diam tincidunt sodales. In lacinia hendrerit ante 
sit amet suscipit. Class aptent taciti sociosqu ad litora torquent 
per conubia nostra, per inceptos himenaeos. Donec scelerisque nisl 
sit amet nisi malesuada dictum. Curabitur a lectus eros. In et arcu 
in sem lacinia commodo non sed mauris. Nam consectetur feugiat 
mollis. Mauris a tempus mauris. Ut non facilisis est, sed auctor est. 
Fusce eget velit aliquam, semper mi ut, laoreet risus. Suspendisse 
sed lacus id massa dapibus scelerisque eu at velit. Aliquam vitae leo 
in libero maximus dictum id quis lacus.

Mas e se este texto precisasse ser formatado para um dispositivo com uma tela menor, talvez o modo texto de 40 colunas de um MSX e já formatando a saída para ser incluída em um programa em assembly.

$ fold --width=40 --spaces lorem_ipsum.txt | while read LINE;\
  do echo -e "db \"${LINE}\",13,10" ; done
db "Lorem ipsum dolor sit amet, consectetur ",13,10
db "adipiscing elit. Donec aliquam elit vel ",13,10
db "diam tincidunt sodales. In lacinia ",13,10
db "hendrerit ante sit amet suscipit. Class ",13,10
...

Agora sim está perfeito! 😀

(¹) Ao menos, na resolução de 1366×768, está ótimo.

Anúncios

Um comentário sobre “O comando ‘fold’

  1. Pingback: Expressões regulares, o básico – parte 2 | giovannireisnunes

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s