NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
PT

Comandos Linux e habilidades de shell

sed: Editando fluxos sem abrir um editor

sed edita lateralmente: fluxos inteiros de texto passam por ele, saem transformados e nenhum editor abre. Sua reputação vem de -i, que transforma uma substituição de uma linha em uma operação em lote em milhares de arquivos, e das histórias de desastres de administradores que o executaram sem um sufixo de backup. O fluxo de trabalho seguro nunca muda: execute a substituição visível, confirme a saída e adicione -i com um sufixo e mantenha o código de saída.

Pontos principais

  1. Visualize antes de confirmar: sed -n '10,20p' file mostra um intervalo de linhas, e a mesma combinação -n mais p imprime apenas linhas que correspondem a um regex ou endereço.
  2. Substitua por sinalizadores que façam o que você quer dizer: s/old/new/g para todas as correspondências, um número como 2g apenas para o segundo e -E para regex estendido sem uma página de escapes de barra invertida.
  3. As edições no local recebem um sufixo, sem exceções: o aplicativo sed -i.bak 's/http:/https:/g' mantém um backup com o mesmo nome próximo a cada alteração; esse sufixo resgatou mais implantações do que o histórico de desfazer de qualquer editor.
  4. Os delimitadores são gratuitos: s|/var/www|/srv/app|g (ou s#...#g) evita brigas de escape de barra quando seu padrão está cheio de caminhos.
  5. -i não é atômico: uma falha ou um regex incorreto no meio do lote deixou para trás arquivos meio reescritos, então trabalhos em massa são executados em cópias ou árvores rastreadas pelo git, nunca a única cópia.
  6. GNU e BSD sed discordam em -i: BSD requer o sufixo antes do script (sed -i '' funciona no macOS, não é uma sintaxe Linux), o que é mais uma razão pela qual os scripts de portabilidade evitam -i inteiramente.
  7. Excluir e isolar são verbos honestos: 'd' remove linhas correspondentes (sed '/^#/d' remove comentários) e -n com um intervalo isola uma seção; ambos lêem melhor do que substituições inteligentes.
  8. Qualquer coisa além de edições de linha única, blocos literais de múltiplas linhas ou junções com estado pertence ao awk ou a um script real; forçar o sed a fazer o trabalho do programador é como nascem as frases de efeito ilegíveis.

Nota de campo

Meu primeiro sed -i sem o sufixo .bak atingiu uma configuração nginx de produção logo antes do pico de tráfego da tarde. Desde então, cada edição local carrega um sufixo de backup, e eu li a saída da simulação antes mesmo de -i chegar perto do comando.

Perguntas frequentes

Como edito apenas linhas que correspondem a outra coisa?

Aborde-os: sed '/cache/s/true/false/' muda de verdadeiro para falso apenas em linhas de cache e intervalos como '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' edita escopo em blocos; o endereço vai primeiro, o comando depois.

Por que sed não corresponde ao final das linhas em um arquivo editado no Windows?

Essas linhas terminam com caracteres de retorno de carro que as âncoras '$' não esperam; remova-os com tr primeiro ou normalize no caminho, e o conteúdo multilinha ainda pertence ao awk ou Perl com -0777.

O sed é mais rápido que o awk para substituições simples?

Marginalmente e irrelevante; ambos terminam em milissegundos em arquivos de tamanho de configuração. Escolha pela legibilidade, porque um colega terá que desmontar sua frase em seis meses.

Posso inserir blocos de configuração inteiros com sed?

Sim: 'a' anexa depois, 'i' insere antes e 'c' substitui a linha, mas mantenha o texto inserido simples e de propósito único; blocos reais pertencem a um arquivo de modelo ou a uma etapa de provisionamento adequada.

Como a Kinetikatech ajuda com comandos linux e habilidades de shell

Para ser honesto, a maioria das equipes chega até nós depois de tentar sozinha primeiro: Os comandos e hábitos de script que decidem se um administrador opera um servidor ou o combate: pesquise, transforme, transfira e supervisione textos e processos com as ferramentas presentes em cada instalação básica. Nosso serviço Segurança de servidores Linux e Gestão de servidores existe para você não precisar aprender comandos linux e habilidades de shell da forma difícil: cuidamos da configuração, do monitoramento e das surpresas às 3h da manhã.

Falar com um engenheiro

Problema no servidor? Site invadido? Site lento?

Incidentes críticos atendidos em 30 minutos — 24 horas por dia, 7 dias por semana.

Solicitar suporte urgente support@kinetikatech.com