🔧 Como Usar sed e awk para Modificar Arquivos de Configuração no Linux 📝
Olá pessoal, bom dia, boa tarde e boa noite, Prof. Juliano Ramos por aqui – A vida é muito boa e com Deus sempre vai dar certo.
Como administradores de sistema, sabemos que a maior parte dos arquivos de configuração do Linux são em texto simples. Isso, que poderia parecer uma limitação, na verdade é uma grande vantagem! 🥳 Permite que ferramentas de linha de comando poderosas como o sed
e o awk
entrem em ação, transformando tarefas de manutenção tediosas em processos automatizados.
Enquanto novatos podem se sentir confortáveis editando arquivos manualmente com o vi
ou nano
, sysadmins experientes sabem que a verdadeira magia acontece quando automatizamos a análise e a reescrita desses arquivos. Com sed
e awk
, podemos corresponder a padrões, extrair dados e fazer alterações em tempo real diretamente do terminal ou dentro de scripts.
Neste artigo, vamos explorar como usar essas duas ferramentas com exemplos práticos. Vamos mostrar como atualizar endereços IP, extrair valores e até mesmo remover linhas de forma eficiente, para que você possa economizar tempo e esforço. 💪
Exemplo 1: Atualizando um Parâmetro com o Comando sed
Imagine que você precisa mudar a porta do SSH em um servidor. Em vez de abrir o arquivo e procurar a linha manualmente, você pode usar o sed
para fazer isso de forma limpa e segura.
Objetivo: Mudar a diretiva ListenPort
no arquivo /etc/ssh/sshd_config
para 2222
.
Bash
sudo sed -i 's/^#\?ListenPort.*/ListenPort 2222/' /etc/ssh/sshd_config
Como funciona? 🧠
- O comando
sudo
é usado para ter permissão de escrita no arquivo. - O sinalizador
-i
diz aosed
para editar o arquivo no local, ou seja, salvar as mudanças diretamente. - A expressão
's/^#\?ListenPort.*/ListenPort 2222/'
é a parte principal:s/
inicia o comando de substituição.^#\?
procura por linhas que podem ou não começar com o caractere de comentário#
.ListenPort.*
encontra a diretivaListenPort
e o restante da linha.- Toda a linha encontrada é substituída por
ListenPort 2222
.
Essa abordagem é fantástica porque garante que, mesmo que a diretiva esteja comentada ou já tenha outro valor, ela será atualizada de forma limpa, sem duplicação.
Exemplo 2: Extraindo Valores com o Comando awk
Precisando extrair um valor específico de um arquivo? O awk
é a ferramenta perfeita para isso! 🎯
Objetivo: Recuperar o valor da diretiva PermitRootLogin
do arquivo de configuração do SSH.
Bash
awk '$1 == "PermitRootLogin" { print $2 }' /etc/ssh/sshd_config
Como funciona? 🤓
$1 == "PermitRootLogin"
corresponde às linhas onde o primeiro campo ($1
) é exatamente igual a “PermitRootLogin”.{ print $2 }
imprime o segundo campo ($2
) da linha correspondida, que é o valor real da diretiva.
Este comando irá verificar o arquivo e imprimir o valor, que geralmente é yes
, no
ou prohibit-password
. Simples e direto!
Exemplo 3: Removendo uma Linha de Parâmetro com o Comando sed
Às vezes, uma linha de configuração se torna obsoleta ou indesejada. O sed
pode remover essa linha de forma rápida e eficiente. 🗑️
Objetivo: Excluir qualquer linha que comece com UseDNS
no arquivo /etc/ssh/sshd_config
.
Bash
sudo sed -i '/^UseDNS/d' /etc/ssh/sshd_config
Como funciona? 💥
/^UseDNS/
corresponde a qualquer linha que comece comUseDNS
.- O comando
d
diz aosed
para apagar (delete
) essas linhas. - O flag
-i
aplica as alterações diretamente no arquivo.
Exemplo 4: Gerando um Relatório com o Comando awk
O awk
é muito mais do que apenas extrair um valor. Ele pode ser usado para gerar relatórios e analisar dados. 📈
Objetivo: Supondo que você tenha um arquivo de configuração services.conf
que lista o status de serviços, extrair apenas os nomes dos serviços que estão “em execução”.
Bash
# Conteúdo do arquivo services.conf:
# apache2 em execução
# mysql parou
# nginx em execução
# ssh em execução
awk '$2 == "em execução" { print $1 }' /etc/myapp/services.conf
Como funciona? 📊
$2 == "em execução"
procura por linhas onde o segundo campo ($2
) é igual a “em execução”.{ print $1 }
imprime o primeiro campo ($1
), que é o nome do serviço.
Isso é perfeito para scripts de monitoramento que precisam de uma lista dos serviços ativos em um servidor.
Exemplo 5: Inserindo uma Linha com o Comando sed
Você precisa adicionar uma nova linha de configuração em um ponto específico do arquivo? O sed
te ajuda a manter a organização. ➕
Objetivo: Adicionar uma diretiva de Banner
após a linha que contém PermitRootLogin
no arquivo /etc/ssh/sshd_config
.
Bash
sudo sed -i '/^PermitRootLogin/a Banner /etc/issue.net' /etc/ssh/sshd_config
Como funciona? 👇
/^PermitRootLogin/
corresponde à linha que contém “PermitRootLogin”.- O comando
a
anexa a linha (append
) após a correspondência. Banner /etc/issue.net
é a linha que está sendo inserida.
Isso é muito útil para agrupar opções de configuração relacionadas logicamente.
Bônus: Combinando awk
e sed
em Scripts de Shell 🚀
Usuários avançados podem combinar awk
e sed
em scripts para automatizar tarefas de configuração em massa.
Objetivo: Percorrer todos os arquivos .conf
em um diretório e atualizar o valor de MaxConnections
para 500
. Se a diretiva não existir, ela será adicionada.
Bash
#!/bin/bash
# Define o novo valor para o parâmetro
NOVO_VALOR=500
# Percorre todos os arquivos .conf em /etc/myapp/
for file in /etc/myapp/*.conf; do
# Verifica se o arquivo contém a diretiva MaxConnections
if awk '$1 == "MaxConnections"' "$file" > /dev/null; then
# Usa sed para substituir o valor existente
sed -i "s/^MaxConnections.*/MaxConnections $NOVO_VALOR/" "$file"
echo "✅ MaxConnections atualizado em $file"
else
# Se a diretiva não existir, anexa-a ao final
echo "MaxConnections $NOVO_VALOR" >> "$file"
echo "➕ MaxConnections adicionado ao $file"
fi
done
Este tipo de script é incrivelmente útil para gerenciar grandes ambientes, garantindo que vários arquivos de configuração tenham atualizações consistentes sem precisar de intervenção manual.
Conclusão 🏁
Dominar sed
e awk
é um passo fundamental para qualquer administrador de sistemas que busca eficiência e automação. Essas ferramentas de linha de comando, simples mas poderosas, permitem manipular arquivos de texto de forma programática, tornando o gerenciamento de configurações mais rápido, seguro e escalável.
Espero que esses exemplos práticos ajudem você a dar os primeiros passos e a descobrir o poder dessas ferramentas. Abrace a automação e liberte-se de tarefas repetitivas!
Quer aprender mais sobre Linux? Tenha acesso a todos os meus cursos, livros , videos exclusivos, através da minha escola: https://certbest.com.br/ltc/