LinuxParty
En determinadas ocasiones deseamos reemplazar texto dentro de un archivo, por ejemplo, cambiar en Documento.txt todo lo que diga “mi familia” por “nosotros”. Para lograr esto podemos usar nuestro editor de texto preferido (Kate, Gedit, SublimeText, etc) pero siempre es bueno conocer variantes, otras formas de lograr el mismo resultado
Sucede que con expresiones regulares se puede lograr esto, el comando sed es simplemente magnífico, tiene un sinfín de variantes y opciones pero… para aquellos que solo desean reemplazar texto de la forma menos compleja posible, para ellos es que traigo esta variante mucho más simple:
Siguiendo el ejemplo, tenemos el archivo Documento.txt ubicado en $HOME/Documento.txt con el siguiente texto:
(…) mi familia es como todas, como la tuya o la de tu vecino. De hecho mi familia intentamos ser personas responsables y a los ojos de la sociedad, políticamente y socialmente correctos. No obstante, en mi casa hay una oveja negra, y ese es mi papel LOL!. Yo siempre he sido el que no teme a decir lo que piensa (aunque no sea aparentemente correcto a ojos de la sociedad), aunque en realidad mi familia está harta de la
suciedadsociedad de hoy en día.
Con el siguiente comando cambiará “mi familia” por “nosotros“:
perl -pi -e "s[mi familia][nosotros]g" $HOME/Documento.txt
Así de simple
Entonces el texto sería:
(…) nosotros es como todas, como la tuya o la de tu vecino. De hecho nosotros intentamos ser personas responsables y a los ojos de la sociedad, políticamente y socialmente correctos. No obstante, en mi casa hay una oveja negra, y ese es mi papel LOL!. Yo siempre he sido el que no teme a decir lo que piensa (aunque no sea aparentemente correcto a ojos de la sociedad), aunque en realidad mi familia está harta de la
suciedadsociedad de hoy en día.
La sintaxis es:
perl -pi -e "s[lo-que-quiero-cambiar][lo-nuevo-a-poner]g" archivo-en-el-cual-reemplazar
Puede parecer un poco complejo el comando, vamos a desglosarlo un poco y explicarlo de forma un poco más simple
- perl : Lo que usaremos, perl
- -pi : Pí, como π (el de valor aproximado de 3.14)
- -e : La E imagínenla de “e de ejecutar” ^-^
- Luego entre comillas ” abrimos con una s y cerramos con una g : “sg” … imaginen la S de Start (iniciar) y la G de Game Over
- A su vez entre la sg debemos poner dos juegos de corchetes: [ ] y [ ], quedando así: “s[ ][ ]g”
- Dentro de los primeros corchetes como dije más arriba, irá el texto que deseamos quitar y reemplazar por uno nuevo, mientras que en el segundo juego de corchetes irá el nuevo texto a poner, siguiendo el ejemplo: “s[mi familia][nosotros]g”
¿Simple no?
La explicación es en realidad mucho más extensa que lo necesario para el comando, es bastante sencillo de entender
Perl es mucho, muchísimo más que una forma para reemplazar texto, es todo un lenguaje
Si desean aprender más de él instalen el paquete perl-doc y échenle un ojo a toooodo lo que permite, simplemente es un universo diferente.
Por cierto y para cerrar, suponiendo que deseen buscar todos los archivos .txt que tengan en $HOME/Documentos/ y en cada uno reemplazar “mi familia” por “nosotros”, se puede unir find + perl para lograr esto:
find $HOME/Documentos/ -name *.txt -exec perl -p -i -e "s[mi familia][nosotros]g" {} \;
O bien usando un comodín:
perl -p -i -e "s[mi familia][nosotros]g" $HOME/Documentos/*.txt
El problema con esta segunda variante, es que no reemplazará en archivos que se encuentren en subcarpetas
En fin, espero que lo hayan encontrado interesante. Para mí ha sido realmente útil, ya puedo reemplazar texto directamente desde la terminal … genial!

-
Linux
- Cambiar la hora en Linux con Chrony
- Ejecutar Aplicaciones Gráficas Remotas en Local: Guía Completa en Linux
- Montar un directorio remoto, vía NFS, en Linux
- Linux 6.14 ya disponible: Mayor compatibilidad con Windows, Mejoras en gaming, IA y rendimiento para AMD e Intel"
- Zorin OS 17.3, basado en Ubuntu, ya está disponible para usuarios de Windows 10.
- La distribución de Linux KaOS 2025.03 se lanzó con KDE Plasma 6.3 y Linux Kernel 6.13
- Compartir archivos en la red LAN, sin nada, todo con un simple script en Python
- Free10: La mejor alternativa gratuita a Windows 10 basada en Linux
- ¿Se toma en serio la privacidad en línea? Este sistema operativo Linux "en vivo" es para usted
- Linux supera el 5% de cuota de mercado según PornHub: Un crecimiento del 41% en 2024
- Linux 6.14 permite que algunos sistemas suspendan y reanuden más rápidamente
- Cómo mantener Linux optimizado (y ahorrar tiempo) con Stacer
- Cambiar la Hora y la Fecha al sistema Linux
- Predicciones de Linux para 2025
- Elementary OS 8: una distribución de Linux para usuarios de Windows y macOS