LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
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:

http://linuxparty.es

por:

http://www.linuxparty.es/index.php

dentro del fichero: test.txt

Para ello, utilizaremos el caracter: "%"

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

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

[root@localhost test]# cat test.txt
http://www.linuxparty.es/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