Saltar para o conteúdo
101 · LPIC-1 (parte 1)

103.2 Processar fluxos de texto usando filtros

TópicoT11ObjetivoProcessar fluxos de texto usando filtros e comandos de processamento de textoPeso2PáginasLPIC-1 (101) - Version 5.0

Resumo Conciso

Revisão de redirecionamentos e pipes

  • Entrada padrão (stdin), saída padrão (stdout), erro padrão (stderr)
  • > — Redireciona stdout para ficheiro (sobrescreve)
  • >> — Redireciona stdout para ficheiro (acrescenta)
  • < — Redireciona ficheiro para stdin
  • | — Pipe: conecta stdout de um comando ao stdin do próximo
  • cat — Concatena e exibe conteúdo de ficheiros

Comandos de processamento de texto

ComandoDescrição
catConcatena ou lê ficheiros de texto simples
bzcatLê ficheiros comprimidos com bzip2
xzcatLê ficheiros comprimidos com xz
zcatLê ficheiros comprimidos com gzip
lessPagina o conteúdo de um ficheiro com navegação
headExibe as primeiras N linhas (padrão: 10)
tailExibe as últimas N linhas; -f segue o ficheiro
wcConta linhas (-l), palavras e caracteres
sortOrdena saída (alfabética, inversa -r, aleatória -R)
uniqLista/conta linhas correspondentes (-c para contagem)
odExibe ficheiro em notação octal (-x hex, -c caracteres)
nlNumera linhas
sedEditor de fluxo: buscar, substituir, deletar linhas
trSubstitui/remove caracteres
cutImprime colunas de ficheiros de texto
pasteUne ficheiros em colunas
splitDivide ficheiros em menores
md5sumCalcula hash MD5
sha256sumCalcula hash SHA256
sha512sumCalcula hash SHA512

Operações comuns com sed

bash
sed -n /cat/p < ftu.txt          # Listar linhas que contêm "cat"sed /cat/d < ftu.txt              # Remover linhas que contêm "cat"sed s/cat/dog/ < ftu.txt          # Substituir "cat" por "dog" (1ª ocorrência/linha)sed -i.backup s/cat/dog/ ftu.txt  # Editar in-place com backup

Checksums (verificação de integridade)

bash
sha256sum ficheiro.txt             # Calcula hash SHA256sha256sum ficheiro.txt > sha256.txt # Salva hash em ficheirosha256sum -c sha256.txt           # Verifica integridade

Exercícios Guiados

Exercício Guiado 1 — Contar processadores com grep e wc

Enunciado: Quantos processadores/núcleos o sistema tem? Use grep e wc para contar.

Solução:

bash
$ grep processor /proc/cpuinfo | wc -l

Exercício Guiado 2 — Contar processadores com sed

Enunciado: Use sed em vez de grep para contar os processadores.

Solução:

bash
$ sed -n /processor/p /proc/cpuinfo | wc -l

Exercício Guiado 3 — Utilizadores com shell Bash

Enunciado: Liste os nomes dos utilizadores cujo shell termina em /bin/bash.

Solução:

bash
$ grep ":/bin/bash$" /etc/passwd | cut -d: -f1

Exercício Guiado 4 — Utilizadores sem shell Bash

Enunciado: Quantos utilizadores não usam /bin/bash como shell?

Solução:

bash
$ grep -v ":/bin/bash$" /etc/passwd | wc -l

Exercício Guiado 5 — Número de utilizadores e grupos

Enunciado: Quantos UIDs e GIDs diferentes existem em /etc/passwd?

Solução:

bash
$ cut -d: -f3 /etc/passwd | sort -u | wc -l  # Utilizadores$ cut -d: -f4 /etc/passwd | sort -u | wc -l  # Grupos

Exercício Guiado 6 — Primeira, décima e última linha

Enunciado: Use sed para imprimir a 1.ª, 10.ª e última linha de /etc/passwd.

Solução:

bash
$ sed -n -e '1p' -e '10p' -e '$p' /etc/passwd

Exercício Guiado 7 — Utilizadores no grupo 1000

Enunciado: Liste os nomes completos dos utilizadores cujo GID primário é 1000.

Solução:

bash
$ sed -n /:1000:[A-Z]/p mypasswd | cut -d: -f5 | cut -d, -f1

Exercícios Exploratórios

  1. Rifa do Main Office:
bash
$  $ sed -n /'Main Office'/p mypasswd | cut -d: -f5 | cut -d, -f1 | sort -R | head -1
  1. Pessoas por departamento:
bash
$  $ sed -n /'Main Office'/p mypasswd | cut -d, -f2 | uniq -c
  1. Criar ficheiro CSV:
bash
$  $ sed -n /'Main Office'/p mypasswd | cut -d: -f5 | cut -d, -f1,2 | tr ' ' , > names.csv
  1. Garantir integridade com md5sum:
bash
$  $ md5sum names.csv$  $ md5sum names.csv > names.md5
  1. Dividir livro em seções de 100 linhas:
bash
$  $ wget https://www.gutenberg.org/files/50461/50461-0.txt$  $ split -l 100 -d 50461-0.txt melville
  1. Listar ficheiros e proprietários:
bash
$  $ ls -l /etc | tr -s ' ' | cut -d" " -f9,3
  1. Monitorar pendrive via syslog:
bash
$  $ tail -f /var/log/syslog | grep -i 'product\:\|blocks\|manufacturer'