Cargando



Cómo usar comando SED en Linux | EJEMPLOS

Tutorial con vídeo para saber cómo usar comando SED en Linux con diferentes ejemplos.


sep 22 2020 10:39
Avanzado
Total de Apartados : 7

Linux es un sistema lleno de comandos donde cada uno juega un rol esencial en el comportamiento de determinadas tareas, ya sean de gestión de usuario, de objetos o de soporte, cada comando tiene su participación en Linux y uno de estos comandos es Sed del cual hablaremos en Solvetic con detalles.

 

Qué es el comando sed en Linux
El comando sed es literalmente un editor de flujo el cual podemos usar con el fin de modificar trabajos sobre el texto con funciones básicas en un flujo de entrada ya sea de un archivo o entrada de una canalización si aplica.

 

A diferencia de otros editores de texto, con sed es posible filtrar texto en una canalización a medida que avanzamos sobre el contenido seleccionado.

 

 

Ventajas
Las ventajas de usar sed en Linux son:
  • Podemos seleccionar texto
  • Estamos en capacidad para reemplazar texto
  • Permite añadir líneas al texto
  • Podemos eliminar líneas del texto
  • Permite modificar o bien preservar un archivo original

 

Tutorial con ejemplo prácticos sobre cómo usar comando History Linux desde la terminal.

 

La sintaxis general de uso de sed es la siguiente:

sed OPCIONES... [SCRIPT] [ARCHIVO_ENTRADA...]
Aprenderemos algunas formas de usar este comando en Linux.

 

Tutorial para saber permisos Linux con el comando CHMOD 777, CHMOD 755, CHMOD 644 y otros como comando CHOWN o comando CHATTR.

 


1. Cómo usar comando SED en Linux

 

Uso básico de sed
Para este ejemplo vamos a usar “echo” para ver como el comando sed puede reemplazar parte del texto ingresado, ingresamos:
echo solvitic | sed 's / vitic / vetic /'
En este caso estamos indicando a sed que reemplace la palabra “vitic” por “vetic”, al pulsar Enter este será el resultado:

 

 

Vemos que el cambio es automático.

 


2. Selección de texto con el comando SED Linux

 

Paso 1

En este caso vamos a disponer de un archivo de texto el cual esta alojado en el escritorio:

 

 

Ahora usaremos la siguiente línea:

less Solvetic.txt
Paso 2

Al pulsar Enter este será el resultado:

 

 

Con sed es posible seleccionar algunas líneas del archivo, para ello debemos indicar las líneas inicial y final del rango a seleccionar, por ejemplo, si deseamos extraer las líneas dos a siete ejecutamos:

sed -n '2,7p' Solvetic.txt
Paso 3

Veremos lo siguiente:

 

 

Debemos tener presente la coma en los rangos a asignar (2,7), el parámetro p indica significa "imprimir líneas coincidentes", con este el comando sed imprimirá todas las líneas de ese rango y la opción -n (quiet), se encarga de no mostrar el texto que no coincide con ese rango.

 

Paso 4

Podemos usar el parámetro -e (expresión) con el objetivo de realizar selecciones múltiples, por ejemplo:
sed -n -e '1,2p' -e '5,6p' Solvetic.txt

 

Paso 5

Con sed es posible seleccionar la línea de inicio, luego indicamos cual debe ser recorrido del archivo y que imprima las líneas alternas, por ejemplo, ingresamos:
sed -n '1~3p' Solvetic.txt
En este caso el primer número hace referencia a la línea de inicio y el segundo número indica a sed cuales líneas después de la línea de inicio serán desplegadas:

 

 

Paso 6

Otro de los usos de sed es la capacidad de seleccionar líneas en las cuales están los patrones de texto coincidentes, esto si no sabemos desde donde se origina el número de línea, podemos ejecutar lo siguiente:
sed -n '/^Ejecutar /p' Solvetic.txt

 

Veremos las líneas que inician con dicho termino.

 


3. Cómo crear reemplazos con SED Linux

 

Paso 1

En la parte básica vimos como reemplazar texto usando sed, allí usamos el parámetro -s (substitution). Luego la primera cadena indica el patrón de búsqueda y la segunda hace referencia al texto con el cual se va a reemplazar.
sed -n 's/tareas/acciones/p' Solvetic.txt
En este ejemplo reemplazamos “tareas” por “acciones”:

 

 

Paso 2

Con el parámetro p sed se detiene automáticamente después de la primer coincidencia, para realizar una búsqueda global y realizar el cambio en general debemos agregar “g”:
sed -n 's/tareas/acciones/gp' Solvetic.txt
Si deseamos que no se distinga entre mayúsculas y minúsculas añadiremos la “i”:
sed -n 's/tareas/acciones/gpi' Solvetic.txt
Paso 3

Es posible crear restricciones de los reemplazos solo a ciertas secciones del archivo, en primer lugar listamos las líneas a analizar:
sed -n '1,3p' Solvetic.txt

 

Paso 4

Vamos a ver lo siguiente, podemos buscar donde haya dos espacios y reemplazarlos por uno:
sed -n '1,3 s/  */ /gp' Solvetic.txt
El asterisco (*) representa cero o más del carácter anterior seleccionado.

 

Paso 5

Es posible reducir el patrón de búsqueda a un solo espacio con el siguiente comando:
sed -n '1,3 s/ */ /gp' Solvetic.txt
Vemos la diferencia de los resultados:

 

 

En este último caso, el asterisco coincide con cero o más del carácter anterior, esto hace que cada caracter que no sea un espacio se vea como un "espacio cero" aplicando la orden.

 

Paso 6

Para hacer dos o más sustituciones de forma simultánea ejecutamos:
sed -n -e 's/ejecutadas/aplicadas/gip' -e 's/tareas/acciones/gip' Solvetic.txt

 


4. Opciones de sustitución con SED en Linux


También podemos usar sed para extraer nombres de archivos del sistema, para este caso debemos tener en cuenta que cada objeto debe coincidir con un patrón de búsqueda (subexpresiones) el cual es posible numerar (hasta máximo de nueve elementos).

 

Paso 1

Después estos números pueden ser usados para establecer una referencia a subexpresiones específicas.
La subexpresión debe ir entre paréntesis [()] y los paréntesis deben ir precedidos de una barra inclinada hacia atrás (\) para que no se detecten como un caracter normal, por ejemplo:
sed 's/\([^:]*\).*/\1/' /etc/passwd

 

Las variables usadas en este comando son
  • sed 's/: indica el comando sed y el inicio de la expresión de sustitución.
  • \(: encierra la subexpresión, precedido por una barra invertida
  • [^:]*: es la primera subexpresión del término de búsqueda la cual contiene un grupo entre corchetes, el signo de intercalación (^) significa "no" al ser usado en un grupo, es decir, cualquier caracter que no sea dos puntos
  • \): El paréntesis de cierre [)] con una barra diagonal inversa
  • .*: es la segunda subexpresión de búsqueda la cual indica "cualquier caracter y cualquier número de estos".
  • /\1: es la parte de sustitución de la expresión la cual contiene un numero 1 precedido por una barra invertida (\) e indica que el texto coincide con la primera subexpresión
  • /': finaliza el comando sed

 

 

Paso 2

Con el comando anterior hemos buscado cualquier cadena de caracteres que no contenga dos puntos, debido a que cada línea del archivo /etc/passwd inicia con el nombre de usuario terminado en dos puntos. Podemos sustituimos ese valor aislando el nombre de usuario con la siguiente orden:
sed 's/\([^:]*\)\(.*\)/\2/' /etc/passwd

 

Paso 3

Podemos desplegar solo los nombres de usuario con el siguiente comando:
sed 's/:.*//" /etc/passwd
Otra de las tantas opciones con sed es usar el parámetro c (cut – cortar) para reemplazar texto en un archivo, por ejemplo:
sed '/Linux/c sistema operativo Linux' Solvetic.txt

 


5. Insertar líneas y texto con SED en Linux

 

Paso 1

Otra de las tareas a usar con sed es la de insertar nuevas líneas y texto en un archivo, en este caso tenemos los siguientes datos:

 

 

Paso 2

Podemos insertar una nueva línea especificando debajo de cual se insertará:
sed '/Ub/a --> Inserted!' Solvetic.txt

 

Paso 3

También es posible usar el comando Insertar (i) con el fin de insertar una nueva línea encima de la coincidencia:
sed '/Wi/i --> Inserted!' Solvetic.txt

 

Paso 4

Podemos hacer uso del signo ampersand (&) con el fin de añadir texto nuevo a una línea coincidente en el archivo, ejecutamos:
sed 's/.*/--> Inserted &/' Solvetic.txt

 


6. Cómo borrar una línea con SED Linux


Para este caso debemos usar el parámetro d (delete), para borrar por ejemplo la segunda línea ejecutamos:
sed '2d' Solvetic.txt

 

Podemos eliminar un rango si es necesario:

sed '1,4d' Solvetic.txt
Para eliminar líneas fuera de un rango, debemos usar un signo de exclamación (!) de la siguiente forma:
sed '2,4!d' Solvetic.txt

7. Cómo guardar los cambios con SED en Linux

 

Paso 1

Para aplicar los cambios realizados, es posible usar opción In-place (-i) con el fin de que sed escriba los cambios en el archivo original, pero por mayor seguridad podemos agregar una extensión de respaldo de la siguiente forma (hemos respaldado las líneas que contienen la palabra Wi):
sed -i'.bak' '/^.*Wi.*$/d' Solvetic.txt
Listamos el contenido:
cat Solvetic.txt.bak

 

Paso 2

Es posible redireccionar la salida a un nuevo archivo con los mismos resultados:
sed -i'.bak' '/^.*Wi.*$/d' Solvetic.txt > Solvetic1.txt

 

Con sed podemos trabajar con los archivos de una manera totalmente completa en Linux ya que hemos visto cada una de sus opciones de uso.

 

Tutorial para saber cómo copiar archivos en Linux, mover archivos en Linux o borrar archivos en Linux.


¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X