GNU/Linux >> Tutoriales Linux >  >> Linux

10 Ejemplos de comandos Sed (Editor de flujo)

Sed es un editor de secuencias en un sistema operativo similar a UNIX que se utiliza para filtrar y transformar texto. Sed se deriva originalmente del editor de línea básico 'ed', un editor que encontrará en todos los sistemas Unix, pero que rara vez se usa debido a su difícil interfaz de usuario.

¿Cómo funciona sed?

Como sed es un editor de flujo, hace su trabajo en un flujo de datos que recibe de stdin, como a través de una tubería, escribiendo sus resultados como un flujo de datos en stdout (a menudo, la pantalla del escritorio). Podemos redirigir esta salida a un archivo. Sed no suele modificar un archivo de entrada original; en su lugar, podemos enviar el contenido de nuestro archivo a través de una tubería para que sea procesado por sed. Esto significa que no necesitamos tener un archivo en el disco con los datos que desea cambiar, esto es particularmente útil si tiene datos provenientes de otro proceso en lugar de estar ya escritos en un archivo.

Sintaxis de sed

# sed [option] commands [input-file]

En esta publicación discutiremos algunos de los ejemplos prácticos del comando sed, haremos muchas operaciones sed en el archivo 'passwd', así que primero copie el archivo '/etc/passwd' a la carpeta /tmp.

# cp /etc/passwd /tmp/

Ejemplo 1:Eliminar todas las líneas con sed

# cat /tmp/passwd | sed 'd'

El comando anterior envió todo el contenido del archivo /tmp/passwd a través de una tubería a sed. Tenga en cuenta que el archivo /tmp/passwd no se modificó en absoluto. Sed solo leyó el contenido del archivo y no le dijimos que escribiera en el archivo, solo leyó de él. Los resultados de los comandos de edición en cada línea se imprimen en la salida estándar. En este caso, no se imprimió nada en la pantalla porque usamos la opción 'd' para borrar cada línea.

Ejemplo 2:Invocar sed con la opción '-e' (añadir el script a los comandos a ejecutar)

En lugar de invocar a sed enviándole un archivo a través de una canalización, podemos indicarle a sed que lea los datos de un archivo como se muestra en el siguiente ejemplo.

# sed -e 'd' /tmp/passwd
#

Invocar sed de esta manera define explícitamente el comando de edición como un script sed que se ejecutará en el archivo de entrada /tmp/passwd. La secuencia de comandos es simplemente un comando de edición de un carácter aquí, pero podría ser mucho más grande.

También podemos redirigir la salida estándar del comando sed a un archivo.

# sed -e 'd' /tmp/passwd > /tmp/new-passwd

Ejemplo 3:Impresión de líneas usando sed (-n indicador y comando p)

El indicador '-n' desactiva la impresión automática para que sed imprima líneas solo cuando se le indique explícitamente que lo haga con el comando 'p'.

# cat /tmp/passwd | sed 'p' | head -5
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

Como vemos arriba, si especificamos el comando de edición 'p' sin el indicador '-n', sed imprimirá líneas duplicadas. Entonces, para mostrar líneas únicas, use el indicador '-n' con el comando p en sed. Los ejemplos se muestran a continuación:

# cat /tmp/passwd | sed -n 'p' | head -5
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

Ejemplo 4:Edición del archivo fuente usando la opción '-i'

El comando Sed de forma predeterminada no edita el archivo original o de origen para nuestra seguridad, pero mediante el uso de la opción '-i' se puede editar el archivo de origen.

# sed -i '1d' /tmp/passwd

El comando anterior eliminará la primera línea del archivo fuente /tmp/passwd.

Ejemplo 5:Realice una copia de seguridad del archivo de origen antes de editarlo

Cuando usamos la opción '-i' en el comando sed, se vuelve muy arriesgado porque editará directamente el archivo fuente, por lo que es mejor hacer una copia de seguridad del archivo fuente antes de editarlo, el ejemplo se muestra a continuación.

# sed -i.bak '1d' /tmp/passwd
# ls -l /tmp/passwd*
-rw-r--r-- 1 root root 2229 Nov 24 22:36 /tmp/passwd
-rw-r--r-- 1 root root 2261 Nov 24 22:35 /tmp/passwd.bak

En el comando sed anterior, se eliminará la primera línea del archivo /tmp/passwd, pero antes de ese comando sed toma la copia de seguridad de /tmp/passwd como /tmp/passwd.bak.

Ejemplo 6:Eliminar las líneas especificando el rango.

Borrando las primeras 5 líneas del archivo /tmp/passwd.

# cat /tmp/passwd | sed '1,5d'

Ejemplo 7:Eliminar las líneas vacías de un archivo

# cat /tmp/detail.txt 
245
678

linux
unix

suse

En el archivo details.txt tenemos dos líneas vacías, use el siguiente comando para eliminar líneas vacías.

# sed '/^$/d' /tmp/detail.txt
245
678
linux
unix
suse

Ejemplo 8:Eliminar las líneas que contienen las cadenas

Supongamos que queremos eliminar una línea del archivo /tmp/passwd que contiene la palabra "juegos".

# sed '/games/d' /tmp/passwd

Ejemplo 9:Buscar y reemplazar cadenas en el archivo

Suponga que desea reemplazar la 'raíz' con 'Administrador', el ejemplo se muestra a continuación:

# sed 's/root/Admin/' /tmp/passwd

Es muy importante tener en cuenta que sed sustituye solo la primera aparición en una línea. Si la cadena 'raíz' aparece más de una vez en una línea, solo se reemplazará la primera coincidencia. Para reemplazar cada cadena en el archivo con la nueva en lugar de solo la primera aparición, para hacer la sustitución globalmente agregue una letra 'g' al final del comando como se muestra a continuación:

# sed 's/root/Admin/g' /tmp/passwd

Ejemplo 10:Sustitución múltiple usando la opción -e

Supongamos que queremos reemplazar la cadena 'raíz' con 'Admin' y la cadena 'bash' con 'sh'. A continuación se muestra un ejemplo:

# cat /tmp/passwd | sed -e 's/root/Admin/g' -e 's/bash/sh/g'


Linux
  1. Comando mv en Linux:7 ejemplos esenciales

  2. Ejemplos de comandos de cola de Linux

  3. Introducción a sed (Stream Editor):ejemplos útiles de comandos sed

  4. Ejemplos de comandos de archivo en Linux

  5. Ejemplos de comandos sed en Linux

Comando WC de Linux con ejemplos

Ejemplos de comandos cat de Linux

Ejemplos de comandos gzip de Linux

Ejemplos de comandos dumpe2fs en Linux

Ejemplos de comandos fsck en Linux

Ejemplos de comandos mkfs en Linux