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

Comandos de Linux y habilidades de Shell

sed: Editar secuencias sin abrir un editor

sed edita de lado: secuencias enteras de texto pasan a través de él, salen transformadas y no se abre ningún editor. Su reputación proviene de -i, que convierte una sustitución de una línea en una operación por lotes en miles de archivos, y de las historias de desastres de administradores que lo ejecutaron sin un sufijo de respaldo. El flujo de trabajo seguro nunca cambia: ejecute la sustitución visible, confirme el resultado, luego agregue -i con un sufijo y conserve el código de salida.

Puntos clave

  1. Vista previa antes de confirmar: el archivo sed -n '10,20p' muestra un rango de líneas, y la misma combinación -n más p imprime solo líneas que coinciden con una expresión regular o dirección.
  2. Sustituye con indicadores que hagan lo que quieres decir: s/old/new/g para todas las coincidencias, un número como 2g solo para el segundo y -E para expresiones regulares extendidas sin una página de escapes de barra invertida.
  3. Las ediciones in situ obtienen un sufijo, sin excepciones: la aplicación sed -i.bak 's/http:/https:/g' mantiene una copia de seguridad con el mismo nombre junto a cada cambio; ese sufijo ha rescatado más implementaciones que el historial de deshacer de cualquier editor.
  4. Los delimitadores son gratuitos: s|/var/www|/srv/app|g (o s#...#g) evita peleas de escape cuando tu patrón está lleno de caminos.
  5. -i no es atómico: una falla o una mala expresión regular a mitad del lote dejó archivos medio reescritos, por lo que los trabajos masivos se ejecutan en copias o árboles rastreados por git, nunca en la única copia.
  6. GNU y BSD sed no están de acuerdo con -i: BSD requiere el sufijo antes del script (sed -i '' funciona en macOS, no es una sintaxis de Linux), que es una razón más por la que los scripts de portabilidad evitan -i por completo.
  7. Eliminar y aislar son verbos honestos: 'd' elimina las líneas coincidentes (sed '/^#/d' elimina los comentarios) y -n con un rango aísla una sección; ambos se leen mejor que las sustituciones inteligentes.
  8. Todo lo que vaya más allá de las ediciones de una sola línea, los bloques literales de varias líneas o las uniones con estado pertenece a awk o a un script real; Obligar a sed a hacer trabajo de programador es la forma en que nacen las frases ingeniosas ilegibles.

Nota de campo

Mi primer sed -i sin un sufijo .bak llegó a una configuración de producción de nginx justo antes del pico de tráfico de la tarde. Desde entonces, cada edición in situ lleva un sufijo de respaldo, y leo el resultado del ensayo antes de que -i se acerque al comando.

Preguntas frecuentes

¿Cómo edito solo líneas que coinciden con otra cosa?

Abordarlos: sed '/cache/s/true/false/' cambia de verdadero a falso solo en líneas de caché, y rangos como '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' ediciones de alcance a bloques; la dirección va primero, el comando después.

¿Por qué sed no coincide con los finales de línea en un archivo editado en Windows?

Esas líneas terminan con caracteres de retorno de carro que los anclajes '$' no esperan; elimínelos con tr primero o normalícelos al ingresar, y el contenido multilínea aún pertenece a awk o Perl con -0777.

¿Es sed más rápido que awk para reemplazos simples?

Marginalmente e irrelevantemente; ambos terminan en milisegundos en archivos del tamaño de configuración. Elija por legibilidad, porque un colega tiene que descifrar su frase breve en seis meses.

¿Puedo insertar bloques de configuración completos con sed?

Sí: 'a' se agrega después, 'i' se inserta antes y 'c' reemplaza la línea, pero mantenga el texto insertado simple y con un solo propósito; Los bloques reales pertenecen a un archivo de plantilla o a un paso de aprovisionamiento adecuado.

Cómo ayuda Kinetikatech con comandos de linux y habilidades de shell

Seamos honestos, la mayoría de los equipos llegan después de intentarlo por su cuenta: Los comandos y hábitos de secuencias de comandos que deciden si un administrador opera un servidor o lucha contra él: buscar, transformar, transferir y supervisar texto y procesos con las herramientas que se encuentran en cada instalación básica. Nuestro servicio Seguridad de servidores Linux y Gestión de servidores existe para que no tenga que aprender comandos de linux y habilidades de shell por las malas: nos encargamos de la configuración, la vigilancia y las sorpresas de las 3 a. m.

Hablar con un ingeniero

¿Problemas con el servidor? ¿Sitio hackeado? ¿Web lenta?

Incidencias críticas atendidas en 30 minutos — 24 horas al día, 7 días a la semana.

Solicitar soporte urgente support@kinetikatech.com