Filtros de Fluxo de Texto: cat, sort, uniq, wc, head, tail

Filtros de Fluxo de Texto: cat, sort, uniq, wc, head, tail

O Que Voce Vai Conquistar

  • Construir pipelines de filtros que processam texto recebido da entrada padrao
  • Agregar logs com precisao combinando sort / uniq
  • Inspecionar com seguranca apenas a parte necessaria de arquivos grandes com head / tail
  • Extrair campos, converter caracteres e numerar linhas com cut / tr / nl
  • Lidar com tarefas de agregacao frequentes com one-liners encadeados

Este e o nucleo do objetivo 103.2 do LPIC-1 "Processar fluxos de texto usando filtros". Filtros leem a entrada padrao, transformam-na e escrevem na saida padrao; encadea-los com pipes os torna poderosos.

Qual Filtro Usar e Quando

Objetivo Filtro Opcoes-chave
Reordenar linhas sort -n numerico / -r reverso / -k chave
Deduplicar/agregar uniq -c contar / -d apenas duplicatas
Contar itens wc -l linhas / -w palavras / -c bytes
Ver inicio/fim apenas head / tail -n quantidade / tail -f acompanhar
Extrair colunas cut -d delimitador / -f campo
Substituir/remover chars tr -d remover / -s comprimir
Adicionar numeros de linha nl / cat -n -b a numerar todas as linhas

uniq so agrupa duplicatas adjacentes, entao quase sempre e combinado com sort. Esse e o padrao mais frequente tanto no exame quanto no trabalho real.

Passos

Passo 1: Concatenar arquivos para a saida padrao

cat access.log
cat -n script.sh
cat file1 file2 > merged.txt
     1  #!/bin/bash
     2  echo "start"
     3  exit 0

cat concatena multiplos arquivos. -n adiciona numeros de linha e -A revela caracteres invisiveis como quebras de linha e tabulacoes. Para simplesmente visualizar um unico arquivo, less lida melhor com arquivos grandes.

Passo 2: Ordenar e agregar duplicatas

sort access.log | uniq -c | sort -nr | head -n 5
    143 GET /index.html
     97 GET /login
     61 POST /api/data
     28 GET /favicon.ico
     12 GET /robots.txt

"sort -> uniq -c para contar -> ordenacao reversa por contagem -> top 5" e o idioma padrao de agregacao de acessos. uniq -c assume que o passo anterior ja ordenou a entrada.

Passo 3: Contar linhas, palavras e bytes

wc -l access.log
wc -lwc README.md
  10234 access.log
   120  856 5421 README.md

-l e linhas, -w e palavras, -c e bytes (-m e caracteres). Colocado no final de um pipe, fornece diretamente "quantos itens corresponderam".

Passo 4: Fatiar inicio e fim

head -n 20 large.csv
tail -n 50 syslog
tail -f /var/log/nginx/access.log
2026-05-17 10:01:22 INFO  start
2026-05-17 10:01:23 INFO  ready

tail -f exibe linhas adicionadas em tempo real, o basico do monitoramento de logs. Combinar head e tail extrai intervalos como "M linhas a partir da linha N".

Passo 5: Extracao de colunas e conversao de caracteres

cut -d: -f1,7 /etc/passwd
echo "Hello World" | tr 'a-z' 'A-Z'
cat data.txt | tr -s ' ' | tr -d '\r'
root:/bin/bash
daemon:/usr/sbin/nologin
HELLO WORLD

cut -d: -f1 extrai a primeira coluna delimitada por :. tr converte ou remove caracteres; -s comprime caracteres repetidos em um e -d remove caracteres especificados. E comumente usado para remover \r originados do Windows.

Por Que Encadear Filtros

Cada filtro segue a filosofia Unix de "fazer uma coisa bem". sort apenas reordena; uniq apenas lida com duplicatas adjacentes. Ser de proposito unico e exatamente o que os torna livremente composiveis atraves de pipes, alcancando agregacao e extracao sem escrever uma ferramenta dedicada enorme.

uniq lida apenas com duplicatas adjacentes porque processa o fluxo linha por linha sem manter estado. Para lidar com duplicatas de toda a entrada, linhas identicas devem primeiro ser tornadas adjacentes pela ordenacao. Entender essa restricao torna escrever sort | uniq reflexivo.

Solucao de Problemas

Sintoma: uniq -c nao agrega duplicatas

Causa: A entrada nao esta ordenada

Verificacao:

sort file | uniq -c

Correcao: Sempre coloque sort antes de uniq. Ou use sort -u para ordenar e deduplicar de uma vez (mas entao voce perde a contagem -c).

Sintoma: sort -n nao ordena como esperado

Causa: A coluna numerica contem espacos ou caracteres de unidade, ou a posicao da chave nao esta especificada

Verificacao:

sort -k2 -n data.txt

Correcao: Especifique o campo de ordenacao com -k e o delimitador com -t. Para tamanhos leggiveis por humanos (1K, 2M) use sort -h.

Sintoma: tail -f para de acompanhar atualizacoes

Causa: O log rotacionou para um inode diferente

Verificacao:

tail -F /var/log/syslog

Correcao: -f (minusculo) acompanha o inode, entao apos a rotacao mude para -F (maiusculo) para acompanhamento baseado no nome do arquivo.

Lista de Verificacao

  • [ ] Executou o one-liner de agregacao sort | uniq -c | sort -nr
  • [ ] Usou wc -l no final de um pipe para contar itens
  • [ ] Inspecionou apenas a parte necessaria de um arquivo grande com head / tail
  • [ ] Extraiu campos com cut -d -f
  • [ ] Verificou conversao de caracteres e remocao de \r com tr

Resumo

Cenario Comando Finalidade
Agregar sort | uniq -c | sort -nr Ranking de frequencia
Contar wc -l Contagem de linhas
Inicio/fim head -n / tail -f Fatiamento / acompanhamento
Coluna cut -d: -f1 Extracao de campo
Converter tr a-z A-Z Substituicao/remocao por caractere

Encadear filtros e o padrao fundamental de processamento de texto. Correspondencia de padroes mais complexa requer expressoes regulares e grep.

Proximas Leituras

Continue Sua Jornada LPIC-1

Hub LPIC-1

  • Hub de Aprendizado LPIC-1 -- Mapa completo de artigos LPIC-1, acompanhamento de progresso e cobertura dos objetivos do exame

Artigos LPIC-1 Relacionados

Pratica