column, pr e fmt - Entendendo Comandos de Formatação de Texto
O Que Estes Três Comandos Fazem
column alinha campos em colunas organizadas, pr página e formata texto em múltiplas colunas, e fmt reflui texto de parágrafo para uma largura especificada. Os três tornam o texto mais legível e são tipicamente usados no final de um pipeline após filtragem com grep ou awk.
Resumo Rápido
- Alinhar dados delimitados por espaço/tab em uma tabela -->
column -t - Exibir uma lista longa em múltiplas colunas -->
pr -N -t - Refluir linhas longas para uma largura fixa -->
fmt -w 72
column - Alinhando Campos em uma Tabela
Quando você usa cat em dados delimitados por espaço ou tab, os campos não se alinham. column -t calcula a largura máxima de cada campo e preenche com espaços para alinhá-los.
Uso Básico: Alinhar Dados Delimitados por Espaço
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 combinação -t -s é específica do Linux (versão util-linux do column). No macOS (versão BSD), o comportamento de -s difere ou pode não ser suportado. Este artigo assume Linux.
Layout em Múltiplas Colunas com -c
Use -c para especificar a largura da página em caracteres, e column organizará as entradas em múltiplas 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 Saída em Colunas
pr foi originalmente projetado para formatar arquivos de texto para impressão, adicionando cabeçalhos, rodapes e paginação. Hoje é mais comumente usado para saída em múltiplas colunas no terminal e comparação lado a lado de arquivos.
Múltiplas Colunas
Use -N para especificar o número 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 cabeçalho e rodape (nome do arquivo, data, número da página)
Sem -t, pr adiciona um cabeçalho com o nome do arquivo, data e número da página. Ao usar no terminal, quase sempre inclua -t.
Comparação de Arquivos Lado a Lado
-m mescla múltiplos arquivos lado a lado.
pr -m -t file1.txt file2.txt
Esta é uma forma rápida de comparar visualmente dois arquivos de texto sem marcadores de diff.
Controlando Largura e Linhas por Página
pr -3 -t -w 120 -l 60 large_list.txt
-w 120: Largura da página de 120 caracteres-l 60: 60 linhas por página
fmt - Refluindo Texto de Parágrafo
Texto copiado da web ou gerado por programas frequentemente tem comprimentos de linha inconsistentes. fmt reconhece limites de parágrafo e reflui o texto para uma largura especificada.
Uso Básico: Refluir para uma Largura Fixa
cat long_text.txt | fmt -w 72
A largura padrão varia conforme a implementação; use -w explicitamente para garantir.
Refluxo com Reconhecimento de Parágrafos
Linhas em branco marcam os limites de parágrafo. fmt reflui cada parágrafo 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 parágrafo e as reflui. Ele trata tudo entre linhas em branco como um bloco, então quebras de linha manuais são removidas. Não execute fmt em arquivos contendo blocos de código ou listas com marcadores -- ele corrompe a formatação.
Comprimindo Espaços Extras com -u
-u (espacamento uniforme) comprime múltiplos espaços para um. Útil 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 espaço/tab em tabela | column -t |
| Alinhar CSV/TSV para inspeção visual | column -t -s, |
| Exibir lista de arquivos em múltiplas 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 espaços em branco extras no texto | fmt -u |
Padrões de Pipeline
Estes comandos funcionam melhor no final de um pipeline como passo final de formatação.
# 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