GNU/Linux >> Tutoriales Linux >  >> Linux

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

Introducción al Editor sed

El término sed significa editor de secuencias . Sed puede tomar su entrada desde la entrada estándar, aplicar las ediciones solicitadas en la transmisión y poner automáticamente los resultados en la salida estándar. La sintaxis sed permite especificar un archivo de entrada en la línea de comandos.

No necesita interactuar con el editor sed mientras se está ejecutando; por lo tanto, también se le ha denominado editor por lotes. Esto contrasta con editores como vi y ed, que son interactivos. Debido a que sed no requiere interacción, puede colocar comandos sed en un script. Puede llamar al archivo de script y ejecutarlo contra el archivo de datos para realizar operaciones de edición repetitivas.

Formato de comando

A continuación se muestra la sintaxis del comando sed:

# sed [options] 'action [args]' files [ > outfile]

El editor sed es capaz de realizar sustituciones de patrones de texto y eliminaciones de patrones de texto utilizando la sintaxis de expresiones regulares. Estos son los mismos caracteres de expresión regular utilizados por grep.

El comando sed ofrece capacidades que son una extensión de la edición de texto interactivo. Si necesita buscar y reemplazar cadenas de texto en una gran cantidad de archivos, sed es más útil.

Comandos de edición

El editor sed usa comandos de edición (que se muestran en la tabla) que son similares a los que usaría para vi y ed.

Comando Función
d Elimina línea(s)
p Imprime línea(s)
r Lee un archivo
s Sustituye una cadena por otra
w Escribe en un archivo

El comando sed tiene dos opciones:

Opción Función
-n Suprime la salida predeterminada
-f Lee comandos sed desde un archivo de script

Datos de muestra utilizados en los ejemplos

Los siguientes ejemplos ejecutan comandos sed contra el archivo llamado "data.txt". El contenido del archivo data.txt es el siguiente.

# cat data.txt
northwest	NW	Joel Craig	    10
western  	WE	Sharon Kelly	40
southwest	SW	Chris Foster	33
southern 	SO	May Chin	    45
southeast	SE	Derek Johnson	3
eastern  	EA	Susan Beal	    34
northeast	NE	TJ Nichols	    67
north    	NO	Val Shultz	    91
central  	CT	Sheri Watson	44

Uso de sed para imprimir texto

Ejemplo 1:Rango de impresión de líneas

El siguiente ejemplo muestra el uso del comando p (imprimir), que imprime un rango de líneas en la salida estándar. El rango se especifica con una dirección inicial seguida de una coma y luego la dirección final. La salida predeterminada de sed es cada línea que lee. Para suprimir la salida predeterminada, use la opción -n.

# sed -n '3,5p' data.txt 
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3

Ejemplo 2:Impresión de líneas que contienen un patrón específico

El siguiente comando imprime todas las líneas con el patrón hacia el oeste. Utilice la barra diagonal (/) para delimitar la expresión regular.

# sed -n '/west/p' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33

Ejemplo 3:línea de impresión con varios patrones

El siguiente comando imprime la primera línea que contiene el patrón oeste, hasta e incluyendo la siguiente línea que contiene el patrón sur.

# sed -n '/west/,/southern/p' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33
southern        SO      May Chin            45

Ejemplo 4:Línea de impresión con patrón y todas las líneas posteriores

El siguiente comando imprime la primera línea que contiene el patrón Chris, hasta la última línea del archivo.

# sed -n '/Chris/,$p' data.txt 
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Ejemplo 5:Funcionalidad similar a grep

El patrón puede contener los caracteres de expresión regular utilizados por grep. El siguiente ejemplo imprime todas las líneas que comienzan con una s y terminan con un 5.

# sed -n '/^s.*5$/p' data.txt 
southern        SO      May Chin            45

Uso de sed para sustituir texto

Comando Ejemplo Acción de edición
s sed s/x/y/opción Buscar y reemplazar. El patrón de búsqueda x se reemplaza por el patrón y. El patrón de búsqueda y reemplazo son expresiones regulares en la mayoría de los casos, y el comportamiento de búsqueda y reemplazo puede verse influenciado por varias opciones.
y sed y/abc/xyz/ Reemplace cada carácter del conjunto de caracteres de origen con el carácter que tiene la misma posición en el conjunto de caracteres de destino.

Ejemplo 1:Buscar y sustituir un patrón específico

Los s de sed El comando permite que se produzca una operación de búsqueda y sustitución en el texto. El comando utiliza una búsqueda de patrones y un reemplazo de cadena literal. Los caracteres de cadena de reemplazo se toman literalmente sin expansión de metacaracteres.

# sed 's/3/X/' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        X3
southern        SO      May Chin            45
southeast       SE      Derek Johnson       X
eastern         EA      Susan Beal          X4
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

El comando sed verifica cada línea del archivo y sustituye la primera aparición de la cadena anterior con la cadena nueva. Las apariciones posteriores de la cadena anterior dentro de la misma línea no se modifican.

Ejemplo 2:Buscar y sustituir un patrón específico globalmente

El siguiente ejemplo muestra la g (global) comando con las s (buscar y sustituir) y reemplaza todas las apariciones de la cadena anterior con la cadena nueva.

# sed 's/3/X/g' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        XX
southern        SO      May Chin            45
southeast       SE      Derek Johnson       X
eastern         EA      Susan Beal          X4
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Ejemplo 3:Buscar y sustituir con patrón de búsqueda incluido en la sustitución

Ocasionalmente, con una búsqueda y sustitución, la cadena anterior formará parte de la nueva cadena de reemplazo, lo que puede lograr colocando un &(y comercial) en la cadena de reemplazo. La ubicación de &determina la ubicación de la cadena anterior en la cadena de reemplazo.

El objetivo de los siguientes ejemplos es escribir un comando que busque todas las líneas que terminan con un solo dígito en el último campo y reemplazar el solo dígito con el número de un solo dígito más la cadena Single Digit.

Para identificar correctamente las líneas con números de un solo dígito en el último campo, considere el siguiente comando sed. Las pestañas separan los campos con cada línea.

sed -n '/    [0-9]$/p' data.txt 
southeast       SE      Derek Johnson       3

El siguiente comando busca todas las líneas que terminan con un solo dígito en el último campo y reemplaza el solo dígito con el número de un solo dígito más la cadena Single Digit.

# sed 's/    [0-9]$/& Single Digit/' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3 Single Digit
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Uso de sed para eliminar texto

Ejemplo 1:eliminar un rango de líneas

El siguiente comando elimina las líneas 4 a 8 de la salida.

# sed '4,8d' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33
central         CT      Sheri Watson        44

Ejemplo 2:Eliminación de líneas que contienen un patrón específico

El siguiente comando elimina cualquier línea que contenga el patrón oeste.

# sed '/west/d' data.txt 
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Ejemplo 3

El siguiente comando elimina cualquier línea que comience con el patrón oeste.

# sed '/^west/d' data.txt 
northwest       NW      Joel Craig          10
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Ejemplo 4

El siguiente comando elimina el rango de líneas que comienza con la primera línea que contiene el patrón sur, hasta la siguiente línea del archivo que contiene el norte.

# sed '/south/,/north/d' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Funcionalidad adicional de sed:edición de comandos

Los comandos adicionales del editor sed se muestran en la siguiente tabla.

Comando Función
a Agrega texto
c Cambia el texto en la línea actual con texto nuevo
yo Inserta texto encima de la línea actual

Colocar ediciones múltiples en un solo comando sed

Hay momentos en los que desea realizar varias ediciones en el archivo. En lugar de usar múltiples comandos sed, puede usar la opción -e para colocar las ediciones en la misma línea de comando. Las ediciones se realizan en el orden que especifique.

Ejemplo 1

Eliminar líneas con cuidado. Puede realizar ediciones en una línea de texto y, posteriormente, eliminar esa línea de texto de la salida. Esto ocurre en el siguiente ejemplo con la Línea 1 del archivo de entrada.

# sed -e 's/north/North/' -e '1,4d' data.txt 
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
Northeast       NE      TJ Nichols          67
North           NO      Val Shultz          91
central         CT      Sheri Watson        44


Linux
  1. 12 ejemplos útiles de comandos Wget en Linux

  2. Comando ls en Linux:17 ejemplos útiles explicados

  3. 5 ejemplos útiles del comando firewall-cmd

  4. 10 Ejemplos de comandos Sed (Editor de flujo)

  5. Ejemplos de comandos sed en Linux

Ejemplos útiles de comandos Wget en el sistema Linux

15 ejemplos útiles de comandos táctiles en el sistema Linux

Los 50 Ejemplos Prácticos del Comando SED en Linux

9 ejemplos útiles de Touch Command en Linux

10 ejemplos útiles del comando Sort en Linux

12 ejemplos útiles de comandos de fecha de Linux