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óximocat— Concatena e exibe conteúdo de ficheiros
Comandos de processamento de texto
| Comando | Descrição |
|---|---|
cat | Concatena ou lê ficheiros de texto simples |
bzcat | Lê ficheiros comprimidos com bzip2 |
xzcat | Lê ficheiros comprimidos com xz |
zcat | Lê ficheiros comprimidos com gzip |
less | Pagina o conteúdo de um ficheiro com navegação |
head | Exibe as primeiras N linhas (padrão: 10) |
tail | Exibe as últimas N linhas; -f segue o ficheiro |
wc | Conta linhas (-l), palavras e caracteres |
sort | Ordena saída (alfabética, inversa -r, aleatória -R) |
uniq | Lista/conta linhas correspondentes (-c para contagem) |
od | Exibe ficheiro em notação octal (-x hex, -c caracteres) |
nl | Numera linhas |
sed | Editor de fluxo: buscar, substituir, deletar linhas |
tr | Substitui/remove caracteres |
cut | Imprime colunas de ficheiros de texto |
paste | Une ficheiros em colunas |
split | Divide ficheiros em menores |
md5sum | Calcula hash MD5 |
sha256sum | Calcula hash SHA256 |
sha512sum | Calcula hash SHA512 |
Operações comuns com sed
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 backupChecksums (verificação de integridade)
sha256sum ficheiro.txt # Calcula hash SHA256sha256sum ficheiro.txt > sha256.txt # Salva hash em ficheirosha256sum -c sha256.txt # Verifica integridadeExercí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:
$ grep processor /proc/cpuinfo | wc -lExercício Guiado 2 — Contar processadores com sed
Enunciado: Use sed em vez de grep para contar os processadores.
Solução:
$ sed -n /processor/p /proc/cpuinfo | wc -lExercício Guiado 3 — Utilizadores com shell Bash
Enunciado: Liste os nomes dos utilizadores cujo shell termina em /bin/bash.
Solução:
$ grep ":/bin/bash$" /etc/passwd | cut -d: -f1Exercício Guiado 4 — Utilizadores sem shell Bash
Enunciado: Quantos utilizadores não usam /bin/bash como shell?
Solução:
$ grep -v ":/bin/bash$" /etc/passwd | wc -lExercício Guiado 5 — Número de utilizadores e grupos
Enunciado: Quantos UIDs e GIDs diferentes existem em /etc/passwd?
Solução:
$ cut -d: -f3 /etc/passwd | sort -u | wc -l # Utilizadores$ cut -d: -f4 /etc/passwd | sort -u | wc -l # GruposExercí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:
$ sed -n -e '1p' -e '10p' -e '$p' /etc/passwdExercício Guiado 7 — Utilizadores no grupo 1000
Enunciado: Liste os nomes completos dos utilizadores cujo GID primário é 1000.
Solução:
$ sed -n /:1000:[A-Z]/p mypasswd | cut -d: -f5 | cut -d, -f1Exercícios Exploratórios
- Rifa do Main Office:
$ $ sed -n /'Main Office'/p mypasswd | cut -d: -f5 | cut -d, -f1 | sort -R | head -1- Pessoas por departamento:
$ $ sed -n /'Main Office'/p mypasswd | cut -d, -f2 | uniq -c- Criar ficheiro CSV:
$ $ sed -n /'Main Office'/p mypasswd | cut -d: -f5 | cut -d, -f1,2 | tr ' ' , > names.csv- Garantir integridade com md5sum:
$ $ md5sum names.csv$ $ md5sum names.csv > names.md5- Dividir livro em seções de 100 linhas:
$ $ wget https://www.gutenberg.org/files/50461/50461-0.txt$ $ split -l 100 -d 50461-0.txt melville- Listar ficheiros e proprietários:
$ $ ls -l /etc | tr -s ' ' | cut -d" " -f9,3- Monitorar pendrive via syslog:
$ $ tail -f /var/log/syslog | grep -i 'product\:\|blocks\|manufacturer'