Estos 10 ejemplos de Sed lo convertirán en un usuario avanzado de Linux

La edición de archivos de texto y la salida de la terminal es un trabajo diario para quienes administran máquinas Linux. Las utilidades de línea de comandos como sed permiten al usuario modificar y cambiar el contenido de un archivo de texto directamente desde la ventana del terminal.

En este artículo, discutiremos el comando sed en detalle, junto con algunos ejemplos esenciales que demuestran el poder de la utilidad sed en Linux.

¿Qué es el comando sed?

El comando sed, que es un acrónimo de Stream Editor , es una herramienta de línea de comandos que permite a los usuarios de Linux realizar operaciones basadas en texto en archivos y salidas de terminal. Con sed, los usuarios pueden buscar y reemplazar palabras específicas en un texto, mostrar una sección determinada de la salida y editar archivos de texto sin abrirlos.

Las tres operaciones básicas que admite el comando sed son:

  1. Inserción
  2. Supresión
  3. Sustitución (buscar y reemplazar)

Los usuarios avanzados también pueden implementar expresiones regulares con el comando sed para editar secuencias de texto de manera más eficiente.

La sintaxis básica del comando es:

 sed [options] [pattern] [filepath]

… donde las opciones son las diversas funcionalidades del comando, el patrón es la expresión regular o el script que desea hacer coincidir y la ruta de archivo es la ruta al archivo de texto que contiene el texto.

10 ejemplos del comando sed de Linux

Si planea convertirse en un usuario habitual de Linux, saber cómo editar archivos, buscar y reemplazar palabras específicas y filtrar la salida del terminal puede serle útil. Esta sección cubre algunos ejemplos del comando sed que definitivamente lo convertirá en un usuario avanzado de Linux.

Usaremos el siguiente archivo de texto para una demostración en la publicación.

 This is a demo text file.
It is an amazing file that will help us all.
The sed command is also great for stream editing.
Want to learn how to use the command?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

1. Ver un rango de líneas

Los comandos de Linux, como head y tail, generan la primera o las últimas diez líneas de un archivo de texto. Pero, ¿qué sucede si desea obtener el contenido entre dos líneas específicas en un archivo? En tales situaciones, el comando sed puede resultar útil.

Para generar el contenido entre las líneas 3 y 5 del archivo textfile.txt :

 sed -n '3,5p' textfile.txt

La bandera -n evita que sed muestre el espacio del patrón al final de cada ciclo. También puede usar las opciones –quiet y –silent en lugar de -n . El argumento p significa imprimir y se usa para mostrar las líneas coincidentes al usuario.

La ejecución del comando mencionado anteriormente en el archivo de ejemplo produce la siguiente salida.

 The sed command is also great for stream editing.
Want to learn how to use the command?
This is another line in the file.

Para generar todo el contenido del archivo excepto el rango especificado, use la marca d en lugar de p en el comando:

 sed '3,5d' textfile.txt

La bandera d elimina las cadenas coincidentes de la salida y muestra el resto del contenido.

 This is a demo text file.
It is an amazing file that will help us all.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

2. Mostrar líneas no consecutivas

Para imprimir líneas no consecutivas entre varios rangos en el archivo:

 sed -n -e '1,2p' -e '5,6p' textfile.txt

Producción:

 This is a demo text file.
It is an amazing file that will help us all.
This is another line in the file.
This is the third general line in the file.

La bandera -e ayuda a ejecutar múltiples acciones usando un solo comando.

3. Insertar espacio entre líneas

Si por alguna razón desea insertar líneas vacías entre cada línea en un archivo de texto, use el argumento G con el comando sed predeterminado.

 sed G textfile.txt

Para insertar varias líneas vacías en la salida, pase varios argumentos G separados por el carácter de punto y coma ( ; ).

 sed 'G;G' textfile.txt

4. Reemplazar una palabra en un archivo de texto

Si desea reemplazar cada ocurrencia de una palabra específica con alguna otra palabra, utilice los argumentos s y G con el comando. La sintaxis básica para sustituir palabras usando el comando sed es:

 sed s/originalword/replaceword/g filename

Usando la sintaxis mencionada anteriormente, puede reemplazar la palabra asombroso con super en el archivo textfile.txt :

 sed s/amazing/super/g textfile.txt

El argumento s denota sustitución y el comando g se usa para reemplazar el contenido coincidente con el contenido de reemplazo especificado.

Para reemplazar la segunda aparición de la palabra con sed, pase un número al argumento g . En este caso:

 sed s/amazing/super/g2 textfile.txt

Si desea ignorar las mayúsculas y minúsculas mientras sustituye palabras, use gi en lugar de g , donde i significa ignorar mayúsculas y minúsculas.

 sed s/Amazing/super/gi textfile.txt

Relacionado: ¿ Usar Vi? Aquí se explica cómo abrir un archivo, luego guardarlo y salir

5. Sustituir palabras dentro de un rango

También puede sustituir palabras dentro de un rango específico.

 sed '2,5s/amazing/super/g' textfile.txt

6. Realice varias sustituciones a la vez

Si desea realizar dos o más sustituciones a la vez, simplemente separe los comandos con el carácter de punto y coma ( ; ).

 sed 's/amazing/super/g;s/command/utility/gi' textfile.txt

El sistema mostrará la siguiente salida.

 This is a demo text file.
It is an super file that will help us all.
The sed utility is also great for stream editing.
Want to learn how to use the utility?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

7. Reemplazar palabras solo si se encuentra una coincidencia

También puede usar el comando sed para reemplazar una palabra solo si se encuentra una coincidencia determinada en la línea. Por ejemplo, para reemplazar la palabra a con an si la palabra naranja está presente en la línea:

 sed -e '/orange/ s/a/an/g' textfile.txt

La emisión del comando mencionado anteriormente dará como resultado:

 This is a demo text file.
It is an super file that will help us all.
The sed utility is also great for stream editing.
Want to learn how to use the utility?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is an orange.

Tenga en cuenta que la palabra a en la línea Esto es una manzana no se reemplazó porque el sistema no encontró la palabra naranja en ella.

8. Sustituir palabras usando expresiones regulares

Para aquellos que saben cómo usar expresiones regulares, realizar operaciones en cadenas usando el comando sed se vuelve mucho más fácil. Puede implementar expresiones regulares para mejorar la potencia del comando.

Para reemplazar todas las apariciones de la palabra asombroso o asombroso con super :

 sed -e 's/[Aa]mazing/super/g' textfile.txt

De manera similar, también puede usar expresiones regulares avanzadas para ejecutar operaciones específicas usando el comando sed.

9. Pipe sed con otros comandos

También puede encadenar sed con otros comandos de Linux. Por ejemplo, puede canalizar el comando lspci con sed para agregar espacios vacíos entre las líneas en la salida.

 lspci | sed G

Para reemplazar palabras específicas en la salida del comando ip route show :

 ip route show | sed s/src/source/g

El comando antes mencionado sustituye la palabra fuente en lugar de la palabra original src .

Relacionado: Cómo utilizar el comando Buscar para buscar archivos en Linux

10. Edite y haga una copia de seguridad del archivo original

Cuando trabaja con archivos del sistema, es importante hacer una copia de seguridad del archivo original mientras realiza cambios. Esto le ayudará a revertir los cambios en caso de que algo se rompa.

Para hacer una copia de seguridad del archivo original usando sed, use la marca -i en el comando.

 sed -i'.backup' 's/amazing/super/g' textfile.txt

Se creará un nuevo archivo con el nombre textfile.txt.backup . Puede verificar que los dos archivos sean diferentes usando el comando diff .

 diff textfile.txt textfile.txt.backup

Editando cadenas en Linux con sed

A veces, mientras trabaja con archivos de texto en la terminal, formatear y editar la salida para una mejor legibilidad se convierte en una necesidad. Sed y awk son utilidades de línea de comandos en Linux que permiten al usuario trabajar de manera eficiente con archivos de texto dividiendo los datos en líneas separadas.

Muchos usuarios tienen dificultades para memorizar los argumentos y las banderas del comando sed, ya que hay muchos de ellos disponibles para usar. Saber cómo obtener manuales de línea de comandos para cualquier comando de Linux lo ayudará a salir fácilmente de tales situaciones.