Cómo reemplazar números dinámicamente usando sed en Linux

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 de sed (por ejemplo, -i para editar archivos directamente).
  • comando: La operación que se realizará (como s 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.

Suscríbete al boletín SysAdmin

Este es tu recurso para las últimas noticias y consejos sobre administración de sistemas, Linux, Windows, cloud computing, seguridad de la nube, etc. Lo enviamos 2 días a la semana.

¡Apúntate a nuestro newsletter!


– patrocinadores –

Noticias destacadas

– patrocinadores –

¡SUSCRÍBETE AL BOLETÍN
DE LOS SYSADMINS!

Scroll al inicio