Hoy vamos a ver una pequeña introducción a sed en Linux. Veremos cómo remplazar texto de un archivo y enviarlo a otro archivo, enviarlo en la terminal, modificar el archivo original o recibir el texto de una tubería (mejor dicho, de la entrada estándar).
Para ello usaremos sed (stream editor) y la terminal.
La forma básica de sustituir es:
sed s/Búsqueda/Remplazo/ nombre_archivo
Eso leerá el archivo y remplazará la primera ocurrencia de Búsqueda
con Remplazo
; mostrando el resultado en la terminal o, mejor dicho, en la salida estándar.
Si quieres que el remplazo sea global, pasa la opción g:
sed s/Búsqueda/Remplazo/g nombre_archivo
Recuerda que igualmente puedes omitir el nombre del archivo si vas a pasar el texto usando un pipe.
Veamos el primer ejemplo. Tengo un documento de texto con lo siguiente:
Hola,tengo,comas,y,voy,a,remplazarlas,con,guiones,usando,sed
Voy a remplazar las comas por un guión, para ello ejecuto:
De este modo el texto ya modificado se imprime en la terminal.
Si quieres que el texto ya remplazado aparezca en otro archivo, es muy fácil; simplemente dirige la salida al mismo, usando >
.
Por ejemplo, si quiero que el texto arreglado de ejercicio1.txt se vaya a ejercicio1_corregido.txt haría lo siguiente:
Veamos otra opción. Si tú quieres que sed
modifique el archivo, es decir, que el texto de salida sea escrito en el archivo de entrada, pasa la opción -i
. Veamos el siguiente ejemplo:
Comenzamos mostrando el contenido del archivo. Después hacemos la sustitución pero pasamos la opción -i
a sed, que indica que modifique el archivo original.
Eso hará que el texto sea remplazado y que sea guardado en el archivo original. Al mostrarlo de nuevo, vemos que se ha remplazado correctamente.
Este editor es un editor de streams; su nombre lo indica. Por lo tanto podemos usar las tuberías o pipes para pasarle contenido. Un ejemplo sencillo es el siguiente…
Para ver el tiempo que lleva encendido el sistema operativo podemos usar uptime
. Eso mostrará algo como:
11:34:18 up 4 days, 14:47, 1 user, load average: 1.67, 1.57, 1.66
Ahora quiero remplazar “days” por “días” así que puedo hacerlo enviando la salida de uptime por una tubería hacia sed, y remplazarlo:
El comando fue: uptime | sed s/days/días/
y no utilicé la opción global puesto que solo quise remplazar la primer ocurrencia.
Obviamente podría redireccionar la salida a un archivo; enviársela a sed de nuevo, etcétera. Ventajas y bellezas de Linux.
En este post te quiero compartir mi experiencia tramitando un acta de nacimiento de México…
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
Esta web usa cookies.