column, pr e fmt - Entendendo Comandos de Formatacao de Texto
O Que Estes Tres Comandos Fazem
column alinha campos em colunas organizadas, pr pagina e formata texto em multiplas colunas, e fmt reflui texto de paragrafo para uma largura especificada. Os tres tornam o texto mais legivel e sao tipicamente usados no final de um pipeline apos filtragem com grep ou awk.
Resumo Rapido
- Alinhar dados delimitados por espaco/tab em uma tabela -->
column -t - Exibir uma lista longa em multiplas colunas -->
pr -N -t - Refluir linhas longas para uma largura fixa -->
fmt -w 72
column - Alinhando Campos em uma Tabela
Quando voce usa cat em dados delimitados por espaco ou tab, os campos nao se alinham. column -t calcula a largura maxima de cada campo e preenche com espacos para alinha-los.
Uso Basico: Alinhar Dados Delimitados por Espaco
echo -e "name age city\nAlice 30 Tokyo\nBob 25 Osaka" | column -t
name age city Alice 30 Tokyo Bob 25 Osaka
Formatando Arquivos CSV ou Delimitados por Dois-Pontos
Use -s para especificar o delimitador.
head -5 /etc/passwd | column -t -s:
root x 0 0 root /root /bin/bash daemon x 1 1 daemon /usr/sbin /usr/sbin/nologin bin x 2 2 bin /bin /usr/sbin/nologin sys x 3 3 sys /dev /usr/sbin/nologin sync x 4 65534 sync /bin /bin/sync
A combinacao -t -s e especifica do Linux (versao util-linux do column). No macOS (versao BSD), o comportamento de -s difere ou pode nao ser suportado. Este artigo assume Linux.
Layout em Multiplas Colunas com -c
Use -c para especificar a largura da pagina em caracteres, e column organizara as entradas em multiplas colunas automaticamente.
ls /etc | column -c 80
adduser.conf dhcp group magic protocols alternatives environment hostname modprobe.d resolv.conf apt fstab lsb-release os-release rsyslog.conf ...
pr - Paginando e Organizando Saida em Colunas
pr foi originalmente projetado para formatar arquivos de texto para impressao, adicionando cabecalhos, rodapes e paginacao. Hoje e mais comumente usado para saida em multiplas colunas no terminal e comparacao lado a lado de arquivos.
Multiplas Colunas
Use -N para especificar o numero de colunas.
ls /usr/bin | pr -3 -t
[ addpart apt-add-repository aa-enabled addr2line apt-cache aa-exec appstreamcli apt-cdrom ...
-3: layout em 3 colunas-t: Suprime o cabecalho e rodape (nome do arquivo, data, numero da pagina)
Sem -t, pr adiciona um cabecalho com o nome do arquivo, data e numero da pagina. Ao usar no terminal, quase sempre inclua -t.
Comparacao de Arquivos Lado a Lado
-m mescla multiplos arquivos lado a lado.
pr -m -t file1.txt file2.txt
Esta e uma forma rapida de comparar visualmente dois arquivos de texto sem marcadores de diff.
Controlando Largura e Linhas por Pagina
pr -3 -t -w 120 -l 60 large_list.txt
-w 120: Largura da pagina de 120 caracteres-l 60: 60 linhas por pagina
fmt - Refluindo Texto de Paragrafo
Texto copiado da web ou gerado por programas frequentemente tem comprimentos de linha inconsistentes. fmt reconhece limites de paragrafo e reflui o texto para uma largura especificada.
Uso Basico: Refluir para uma Largura Fixa
cat long_text.txt | fmt -w 72
A largura padrao varia conforme a implementacao; use -w explicitamente para garantir.
Refluxo com Reconhecimento de Paragrafos
Linhas em branco marcam os limites de paragrafo. fmt reflui cada paragrafo independentemente.
cat README.txt | fmt -w 80
This is the first paragraph of the document. It explains what the program does and how to use it effectively. This is the second paragraph. It provides additional details about the configuration options available.
fmt junta linhas dentro de um paragrafo e as reflui. Ele trata tudo entre linhas em branco como um bloco, entao quebras de linha manuais sao removidas. Nao execute fmt em arquivos contendo blocos de codigo ou listas com marcadores -- ele corrompe a formatacao.
Comprimindo Espacos Extras com -u
-u (espacamento uniforme) comprime multiplos espacos para um. Util para limpar texto com espacamento inconsistente.
echo "This has extra spaces" | fmt -u
This has extra spaces
Quando Usar Qual
| Caso de Uso | Comando |
|---|---|
| Alinhar dados delimitados por espaco/tab em tabela | column -t |
| Alinhar CSV/TSV para inspecao visual | column -t -s, |
| Exibir lista de arquivos em multiplas colunas | ls | column -c 80 |
| Organizar lista longa em 2-3 colunas | pr -N -t |
| Comparar dois arquivos de texto lado a lado | pr -m -t |
| Refluir linhas longas para largura fixa | fmt -w 72 |
| Comprimir espacos em branco extras no texto | fmt -u |
Padroes de Pipeline
Estes comandos funcionam melhor no final de um pipeline como passo final de formatacao.
# Extrair colunas especificas de CSV e exibir como tabela cut -d, -f1,3,5 data.csv | column -t -s, # Listar arquivos .conf em /etc em 3 colunas find /etc -maxdepth 1 -name "*.conf" | pr -3 -t # Refluir um log longo do git para leitura mais facil git log --oneline -20 | fmt -w 72