LINUX

Cómo usar el comando Sed en Linux con ejemplos

SED abreviado como ‘Stream Editor’ es un potente editor de flujo de texto que puede realizar muchas funciones en archivos que buscan, encuentran, reemplazan e insertan. El comando sed es un comando compatible con expresiones regulares, lo que significa que puede comprender las expresiones regulares que se le proporcionan.

Sin embargo, SED se usa principalmente o principalmente para la sustitución de texto. Con la ayuda de SED, podemos editar archivos sin abrirlos, lo que será mucho más rápido y rápido para encontrar y reemplazar algo en un archivo, en lugar de abrir el archivo y cambiarlo.

En este tutorial, aprenderemos el comando SED con ejemplos fáciles de usar y comprender en nuestro shell de Linux.

Sintaxis del comando Sed

La sintaxis del comando Sed es bastante simple de entender, pero su uso es muy poderoso. Aquí está la sintaxis básica de SED de la siguiente manera:

sed OPTIONS... [SCRIPT] [INPUTFILE...]

Considere el archivo de texto a continuación (‘content.txt’) como una entrada para el comando sed examples.

$ cat > content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

A continuación, se muestran los ejemplos de sed más utilizados.

1. Reemplazo de cadena (palabras o caracteres)

Sed se puede utilizar para buscar y reemplazar una cadena (palabras o caracteres) en la entrada. La opción s se utiliza para reemplazar una cadena. De forma predeterminada, el comando sed solo reemplaza la primera aparición de la cadena en una línea.

El siguiente comando reemplaza la palabra ‘lorem’ por ‘Lorem’ en el archivo ‘content.txt’ para la primera aparición en cada línea:

$ sed ‘s / lorem / Lorem /’ content.txt

Aquí ‘lorem’ es la cadena de búsqueda y ‘Lorem’ es la cadena de reemplazo.

Output
$ sed 's/lorem/Lorem/' content.txt
Lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

2. Reemplazar todas las ocurrencias de una cadena en un archivo

Para buscar y reemplazar todas las apariciones de una cadena en un archivo, use /g (reemplazo global) bandera.

En el siguiente comando, /g flag se usa para reemplazar todas las apariciones de la cadena ‘lorem’ con ‘Lorem’ en el archivo ‘content.txt’.

$ sed 's/lorem/Lorem/g' content.txt
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.

3. Reemplazo de la enésima aparición de un patrón en una línea

El comando sed se puede utilizar con /1,/2 o n (cualquier número) para reemplazar la primera, segunda o enésima aparición de una cadena en una línea.

El siguiente comando reemplaza la segunda (2) aparición de la palabra ‘lorem’ con ‘Lorem’ en cada línea.

$ sed 's/lorem/Lorem/2' content.txt

lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.

Similar al comando tr, sed puede reemplazar todas las apariciones de caracteres en set1 con los caracteres correspondientes en set2 usando y/set1/set2/.

$ echo 'a for apple' | sed -e 'y/af/AF/
Output
A For Apple

4. Reemplazar desde la enésima aparición hasta todas las apariciones en cada línea.

Podemos usar una combinación de /1,/2 o n (cualquier número) y /g para reemplazar todos los patrones de la enésima aparición de una cadena en cada línea.

En el siguiente ejemplo, todas las apariciones de la cadena ‘lorem’ serán reemplazadas por ‘Lorem’ a partir de la segunda ocurrencia en cada línea:

$ sed 's/lorem/Lorem/2g' content.txt
lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.

5. Busque y reemplace una cadena en un número de línea específico

Con sed, podemos restringir la función solo para reemplazar la cadena en un número de línea específico.

En el siguiente comando, podemos encontrar que solo la segunda línea es reemplazada por la cadena ‘Lorem’.

$ sed '2 s/lorem/Lorem/' content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

6. Mostrar texto parcial de un archivo

Con el comando sed puede ver una parte de un archivo en lugar de todo el archivo. los -n La opción se utiliza para suprimir la impresión de todo el contenido y p Se utiliza la opción de imprimir líneas específicas.

El siguiente comando imprimirá líneas de 2 a 4:

$ sed -n 2,4p content.txt
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

7. Mostrar todo el contenido excepto líneas particulares

El comando Sed permite mostrar todo el contenido del archivo excepto líneas particulares. En el siguiente comando, muestre todo el contenido del archivo ‘content.txt’ excepto las líneas 1 y 2:

$ sed 1,2d content.txt
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

8. Mostrar todas las líneas excepto la línea de coincidencia de patrones

Podemos usar el siguiente comando sed para eliminar la línea que tiene el patrón de búsqueda que se menciona. En la salida, la línea con «aprender» se elimina porque coincide con el patrón de búsqueda.

$ sed '/learn/d' content.txt
lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

9. Mostrar líneas reemplazadas

Para imprimir las líneas reemplazadas, utilizamos /p bandera junto con -n.

En la salida, podemos ver que no hay la última línea porque no tenía el patrón de búsqueda ‘lorem’.

$ sed -n 's/lorem/Lorem/p' content.txt

Lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

Más ejemplos de banderas ‘p’ y ‘n’

Imprimir la primera línea

$ sed -n '1p' content.txt

Imprimir rango de línea

$ sed -n '1,4p' content.txt

Imprimir varias líneas

$ sed -n '1p;4p' content.txt

Imprime un archivo

$ sed -n 'p' content.txt

La impresión contiene expresiones regulares o palabras

$ sed -n '/RedHat/p' content.txt

Imprimir si contiene dígitos

$ sed -n '/[0-9]/p' content.txt

Coincidir con expresiones regulares y reemplazar

$ sed -n 's/^L/Matched--&/p' content.txt
Output
Matched--Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Matched--Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Matched--Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.

Usa sed como grep

El siguiente comando sed buscará el usuario ‘root’ en el archivo ‘/ etc / passwd’:

$ sed -n '/root/p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

10. Combinar comandos SED

Si tenemos que realizar múltiples expresiones sed, entonces necesitamos usar e opción para encadenar los comandos sed.

Tomemos un ejemplo, para reemplazar todas las ocurrencias del «lorem» con «Lorem» y eliminar la línea que coincide con el patrón de búsqueda.

$ sed -e 's/lorem/Lorem/g' -e '/learn/d' content.txt

Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.

11. Inserte una línea en blanco después de cada línea.

Usando G opción puede insertar una o varias líneas en blanco en un archivo.

El siguiente comando inserta una sola línea en blanco entre las líneas:

$ sed G content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.

lorem ipsum is highly used by designers. lorem ipsum is great for developers.

lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

learn more about dummy text.

Para insertar dos líneas en blanco, ejecute el siguiente comando:

$ sed 'G;G' content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.

lorem ipsum is highly used by designers. lorem ipsum is great for developers.

lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

learn more about dummy text.

11. Edite y cree una copia de seguridad del archivo original.

Sed permite editar un archivo y al mismo tiempo crear una copia de seguridad del archivo original. Usamos ‘i. ‘ para el nombre del archivo de respaldo y -e edición.

El siguiente comando crea una copia de seguridad del archivo original ‘content.txt’ como ‘content.txt.bak’

$ sed -i.bak -e 's/lorem/Lorem/g' content.txt
Results
$ cat content.txt
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.
$ cat content.txt.bak
lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

12. Eliminar una línea con un patrón

Con este comando sed, puede eliminar una línea que comienza con una cadena en particular y termina con otra cadena. En el siguiente resultado, la línea que comienza con ‘lorem’ y termina con ‘texto’. esta borrado:

$ sed -e 's/^lorem.*text.$//g' content.txt
Output
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

13. Agregar cadena a las líneas

Podemos ejecutar el siguiente comando para agregar algo de contenido antes de cada línea usando expresiones regulares.

En la siguiente salida, podemos ver que ‘Aquí’ se agrega delante de cada línea.

$ sed -e 's/.*/Here &/' content.txt
Here lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Here lorem ipsum is highly used by designers. lorem ipsum is great for developers.
Here lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
Here learn more about dummy text.

Inserte una cadena antes de cada línea:

$ sed 'i inserted line' content.txt
inserted line
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
inserted line
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
inserted line
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
inserted line
learn more about dummy text.

Agregue una cadena después de cada línea:

$ sed 'a Appended line' content.txt
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Appended line
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Appended line
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
Appended line
learn more about dummy text.
Appended line

14. Extraiga los nombres de usuario del archivo / etc / passwd

El comando Sed se puede usar fácilmente para obtener toda la lista de todos los nombres de usuario del archivo ‘/ etc / passwd’.

El siguiente comando sed extraerá todos los nombres de usuario de Linux disponibles:

$ sed 's/([^:]*).*/1/' /etc/passwd
root
daemon
bin
sys
sync
man
lp
news
uucp
proxy
backup
list
gnats
nobody
systemd-network
systemd-resolve
syslog
messagebus
uuidd
debian-spamd
admin

15. Imprimir línea sin líneas comentadas (#) y líneas vacías

Imprima sin líneas comentadas (#) y las líneas vacías son simples con sed.

Podemos ejecutar el siguiente comando para imprimir todas las líneas que no contienen el símbolo de comentario (#) y todas las líneas vacías.

$ sed -e 's/#.*//;/^$/d' content.txt

Para eliminar solo las líneas comentadas:

$ sed -e 's/#.*//' content.txt

16. Extraiga todas las direcciones IP con sed de una cadena

Veamos cómo extraer direcciones IP usando el comando sed con expresiones regulares. He agregado algunas direcciones IP a ‘content.txt’ para probar.

$ cat content.txt
lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.
122.65.49.2
221.11.165.233
219.158.9.97
219.158.19.137

Ahora use regex para extraer la dirección IP del archivo ‘content.txt’ de la siguiente manera:

$ sed '/n/!s/[0-9.]+/n&n/;/^([0-9]{1,3}.){3}[0-9]{1,3}n/P;D' content.txt
122.65.49.2
221.11.165.233
219.158.9.97
219.158.19.137

Encontré otro comando fácil para obtener los mismos resultados, verifique a continuación:

$ sed -n '/[0-9]/p' content.txt.bak
122.65.49.2
221.11.165.233
219.158.9.97
219.158.19.137

También podemos combinar sed con otro comando usando tuberías (|), verifique el siguiente ejemplo:

$ ip addr | sed -n '/inet/p' | sed -e 's/  */ /g' | cut -d ' ' -f3
127.0.0.1/8
::1/128
75.208.225.10/24
2600:3c02::e03c:92ff:fe60:d7e2/64
fe80::f03c:92ef:fe60:d7e2/64

17. Redirigir y escribir en un archivo

los w La bandera se puede usar para escribir la salida en un archivo, en lugar de imprimir en la salida estándar. los w El comando requiere un nombre de archivo en el que se escribirá la salida.

El siguiente comando sed redirigirá la salida a un nuevo archivo ‘rootpwd.txt’:

$ sed -n '/root/w rootpwd.txt' /etc/passwd
$ cat rootpwd.txt
root:x:0:0:root:/root:/bin/bash

Conclusión

En este tutorial de comandos de Linux, aprendimos la sintaxis básica del comando sed y con los ejemplos de sed más comúnmente y más utilizados. Se puede usar sed en bash o scripts de shell para realizar diferentes tareas automatizadas en la manipulación de texto y operaciones sed en el shell de Linux. Con este tutorial, uno puede comprender fácilmente sed y comenzar a implementar de inmediato cuando sea necesario. Si tiene preguntas, sugerencias o comentarios, escríbalos en el cuadro de comentarios a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar