LinuxParty

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

El comando "sed" está presente en todas las distribuciones Linux y es la herramienta preferida por los administradores de sistemas para manipular cadenas de texto.

Debería estar instalado en tu ordenador, pero no lo estuviera deberás hacer:

Para CentOS/FedoraRHEL:

yum install sed

Para Debian/Ubuntu:

apt-get install sed

Explicación sobre el funcionamiento general y ejemplos para reemplazar texto en archivos:

Si nunca has utilizado sed, su funcionamiento es muy simple:

Escribe este ejemplo en la consola:

[maria@localhost ~]$ echo "uno, dos, tres, cinco" | sed s/'cinco'/'cuatro'/g

Al ejecutarse "echo", pasa por la tubería hacia "sed", y este cambia la cadena "cinco" por "cuatro". Por pasar por la "tubería hacia...", se le llama a "|", tubería o (en inglés) pipe.

sed -i 's/texto-a-buscar/texto-a-reemplazar/g' "Fichero o directorio"

Ejemplo 1: Cambiamos el texto Linuxparty por LinuxParty del interior del fichero: test.txt

[root@localhost test]# cat test.txt
Linuxparty1
1Linuxparty
90Linuxparty82
HLinuxpartyH21
 
[root@localhost test]# sed -i 's/Linuxparty/LinuxParty/g' "test.txt"
 
[root@localhost test]# cat test.txt
LinuxParty1
1LinuxParty
90LinuxParty82
HLinuxPartyH21

Ejemplo 2: Cambiamos el texto "LinuxParty" por "--LinuxParty--" en todos los ficheros *.txt a partir de la ruta /test/ de forma recursiva.

Para ello utilizaremos los siguientes comandos:

find: Que realizará una búsqueda en el contenido de todos los ficheros según el patrón definido.

xargs: Ejecutará un comando (en este caso sed) para cada resultado generado por el comando find.

| : Pipe o tubería, en este caso la salida de find corresponderá a la entrada de sed.

sed: Realizará el "buscar-reemplazar".

[root@localhost test]# pwd
/test

[root@localhost test]# du -ah
4.0K    ./new/test.txt
8.0K    ./new
4.0K    ./test.txt
16K     .

[root@localhost test]# cat ./new/test.txt
LinuxParty1
1LinuxParty
90LinuxParty82
HLinuxPartyH21

[root@localhost test]# cat ./test.txt
LinuxParty1
1LinuxParty
90LinuxParty82
HLinuxPartyH21

[root@localhost test]# find /test/ -name "*.txt" -print | xargs sed -i "s/LinuxParty/--LinuxParty--/g"

[root@localhost test]# cat ./new/test.txt
--LinuxParty--1
1--LinuxParty--
90--LinuxParty--82
H--LinuxParty--H21

[root@localhost test]# cat ./test.txt
--LinuxParty--1
1--LinuxParty--
90--LinuxParty--82
H--LinuxParty--H21

Ejemplo 3: Cambiamos una URL por otra del interior de un fichero de texto (test.txt).

El problema de las URLs es que contienen el carácter: "/".

El carácter "/", sed lo utiliza para definir el texto original y el texto a reemplazar.

En el siguiente ejemplo, reemplazaremos la URL:

https://linuxparty.es

por:

/index.php

dentro del fichero: test.txt

Para ello, utilizaremos el caracter: "%"

[root@localhost test]# cat test.txt
https://linuxparty.es

[root@localhost test]# sed -i "s%https://linuxparty.es%/index.phpl%g" "test.txt"

[root@localhost test]# cat test.txt
/index.php

Si quieres saber más sobre "sed" y otras expresiones regulares:

Expresiones Regulares en Linux, que son y cómo entenderlas.

Y

Renombrar múltiples ficheros (quitar espacios, cambiar mayúsculas) a la vez en Linux

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías