El comando sed
(Editor de Flujos) es una herramienta poderosa para el procesamiento de texto en Linux, ampliamente utilizada para tareas como búsqueda, reemplazo de texto y números, eliminación de líneas, entre otros. Este artículo explica cómo usar sed
para reemplazar números dinámicamente con ejemplos prácticos.
¿Qué es sed
?
sed
procesa texto línea por línea y permite realizar tareas como:
- Buscar patrones específicos.
- Reemplazar texto o números.
- Eliminar o insertar líneas.
- Modificar archivos de configuración de forma dinámica.
Sintaxis Básica de sed
sed [opciones] 'comando' archivo
opciones
: Modifican el comportamiento desed
(por ejemplo,-i
para editar archivos directamente).comando
: La operación que se realizará (comos
para sustitución).archivo
: El archivo que se procesará (opcional si usas entrada estándar).
Casos de Uso para Reemplazo Dinámico de Números
1. Reemplazo Básico de Números
Reemplaza un número específico en un archivo o texto:
sed 's/numero_antiguo/numero_nuevo/' archivo
Ejemplo:
echo "Precio: 100 euros" | sed 's/100/200/'
Salida:
Precio: 200 euros
2. Reemplazo de Todos los Números
Reemplaza todas las apariciones de números utilizando expresiones regulares:
sed 's/[0-9]\+/nuevo_numero/g' archivo
Ejemplo:
echo "Artículos: 50, 100, 150" | sed 's/[0-9]\+/0/g'
Salida:
Artículos: 0, 0, 0
3. Incrementar Números Dinámicamente
Aumenta los números en un texto por un valor específico.
Comando:
sed -E 's/[0-9]+/echo $((\0 + incremento))/ge'
Ejemplo:
echo "Item1: 100, Item2: 200" | sed -E 's/[0-9]+/echo $((\0 + 30))/ge'
Salida:
Item1: 130, Item2: 230
4. Reemplazar Números Según Condiciones
Reemplaza números solo si cumplen una condición específica (por ejemplo, mayores a 50).
Comando:
sed -E 's/[0-9]+/test \0 -gt umbral \&\& echo "Alto" || echo "Bajo"/e'
Ejemplo:
echo "Puntajes: 50, 70, 110" | sed -E 's/[0-9]+/test \0 -gt 50 \&\& echo "Alto" || echo "Bajo"/e'
Salida:
Puntajes: Bajo, Alto, Alto
5. Actualizar Números de Versión
Actualiza dinámicamente números de versión en un archivo de configuración.
Archivo (config.txt
):
AppVersion: 1.2.3
LibraryVersion: 4.5.6
Comando:
sed -E 's/[0-9]+\.[0-9]+\.[0-9]+/3.0.0/' config.txt
Salida:
AppVersion: 3.0.0
LibraryVersion: 3.0.0
6. Aumentar Precios por Porcentaje
Aumenta valores numéricos (por ejemplo, precios) en un archivo por un porcentaje específico.
Archivo (precios.txt
):
Item1: 100
Item2: 200
Item3: 300
Comando:
sed -E 's/[0-9]+/echo $((\0 + (\0 * 10 / 100)))/ge' precios.txt
Salida:
Item1: 110
Item2: 220
Item3: 330
Edición Directa en Archivos
Para modificar un archivo directamente, utiliza la opción -i
:
sed -i 's/numero_antiguo/numero_nuevo/' archivo
Combinación de sed
con Otros Comandos
Puedes combinar sed
con herramientas como awk
o scripts de bash
para manipulaciones más complejas.
Ejemplo: Reemplazar números mayores a 50 y añadir » (Actualizado)»:
awk '{for(i=1;i<=NF;i++) if($i ~ /^[0-9]+$/ && $i > 50) $i=$i" (Actualizado)"; print}' archivo
El reemplazo dinámico de números con sed
es una habilidad versátil para usuarios de Linux. Desde manipular archivos de configuración hasta procesar grandes volúmenes de texto, sed
ofrece soluciones rápidas y eficientes para diversas tareas. Con su capacidad de combinarse con expresiones regulares y otros comandos, sed
se convierte en una herramienta imprescindible para administradores de sistemas y desarrolladores.