Inicio > Procesamiento y búsqueda de texto > sed

sed: Edición de contenido de archivos (in-place)

sed (stream editor) es una utilidad potente para filtrar y transformar flujos de texto. En particular, la opción `-i` permite modificar archivos directamente (edición in-place), lo que le permite procesar texto de manera eficiente sobrescribiendo el archivo original o creando una copia de seguridad. Esta guía se centra en la funcionalidad de edición in-place de `sed`.

Descripción general

sed es un editor de texto no interactivo que realiza operaciones de transformación de texto en flujos de entrada (principalmente archivos). La opción `-i` es una de las características más útiles de `sed`, ya que permite aplicar las modificaciones directamente al archivo original en lugar de enviarlas a la salida estándar. Esto es muy útil para modificar el contenido de los archivos en lotes en scripts o tareas automatizadas.

Características principales

Las funcionalidades clave de sed -i son las siguientes:

  • Modificación directa del archivo original: Guarda los cambios directamente en el archivo.
  • Posibilidad de crear copias de seguridad: Permite modificar el archivo original mientras se conserva una copia de seguridad.
  • Soporte de expresiones regulares: Permite el emparejamiento y reemplazo de patrones complejos utilizando potentes expresiones regulares.
  • Automatización basada en scripts: Adecuado para procesar el contenido de archivos en lotes dentro de scripts o tuberías.

Opciones principales

Las opciones principales que se usan comúnmente con el comando `sed`. En particular, la opción `-i` es esencial para modificar directamente el contenido de los archivos.

Edición in-place

Scripts/Expresiones

Otros

Comando generado:

Combina los comandos.

Descripción:

`sed` Ejecutando el comando.

Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.

Ejemplos de uso

Ejemplos de uso real de `sed -i`. Úselo con precaución ya que modifica directamente el contenido del archivo.

Cambiar una cadena específica en un archivo

sed -i 's/old_string/new_string/g' example.txt

Cambia todas las ocurrencias de 'old_string' por 'new_string' en el archivo especificado (example.txt). No crea un archivo de copia de seguridad.

Cambiar una cadena mientras se crea una copia de seguridad

sed -i.bak 's/old_string/new_string/g' example.txt

Crea una copia de seguridad del archivo original (example.txt.bak) antes de modificar el archivo, y luego cambia 'old_string' por 'new_string'.

Eliminar líneas que contienen un patrón específico

sed -i '/pattern_to_delete/d' example.txt

Elimina todas las líneas que contienen la cadena 'pattern_to_delete' del archivo (example.txt).

Cambiar cadenas en varios archivos

find . -name "*.txt" -exec sed -i 's/old_string/new_string/g' {} +

Cambia 'old_string' por 'new_string' en todos los archivos .txt del directorio actual. Puede usarlo junto con el comando `find` para procesar varios archivos.

Eliminar las primeras 5 líneas de un archivo

sed -i '1,5d' example.txt

Elimina las líneas de la primera a la quinta del archivo (example.txt).

Eliminar líneas en blanco

sed -i '/^$/d' example.txt

Elimina todas las líneas en blanco del archivo (example.txt).

Consejos y precauciones

`sed -i` es potente, pero requiere especial precaución ya que modifica los archivos directamente. Familiarícese con los siguientes consejos y precauciones para usarlo de forma segura y eficiente.

Utilizar la opción de copia de seguridad

Adquiera el hábito de dejar siempre una copia de seguridad del archivo original añadiendo una extensión a `-i.bak` o `-i`. Es la única forma de recuperar el archivo original si ejecuta accidentalmente un comando incorrecto.

  • Ejemplo: `sed -i.orig 's/foo/bar/g' myfile.txt`

Probar primero

Antes de aplicar `sed -i` a archivos importantes, pruébelo siempre en una copia o archivo de prueba para asegurarse de que funciona como se espera. Ejecutarlo sin la opción `-i` primero y verificar el resultado en la salida estándar también es una buena práctica.

  • Ejemplo: `sed 's/foo/bar/g' myfile.txt` (muestra los cambios en la pantalla)

Comprender las expresiones regulares

`sed` utiliza potentes expresiones regulares. Familiarizarse con la sintaxis de las expresiones regulares permite un emparejamiento y reemplazo de patrones más complejo y preciso. Se utiliza con frecuencia junto con el comando `s` (sustituir).

  • Comprenda la diferencia entre expresiones regulares básicas (BRE) y expresiones regulares extendidas (ERE).
  • Puede usar la opción `-r` o `-E` para usar expresiones regulares extendidas (GNU sed).

Ejecutar múltiples comandos

Si necesita ejecutar varios comandos en una sola llamada a `sed`, puede usar la opción `-e` varias veces o utilizar un archivo de script (`-f`). Esto es más eficiente que usar tuberías varias veces.

  • Ejemplo: `sed -i -e 's/foo/bar/g' -e '/pattern/d' myfile.txt`

Comandos de la misma categoría