Comando SED en Linux | conjunto 2

Hemos discutido algunas de las opciones de comando SED en Sed Command en Linux/Unix con ejemplos 

SED se utiliza para buscar, filtrar, sustituir texto, reemplazar y manipular texto como inserción, búsqueda de borrado, etc. Es una de las poderosas utilidades que ofrecen los sistemas Linux/Unix. Podemos usar sed con expresiones regulares. Espero que al menos tengas los conocimientos básicos sobre las expresiones regulares de Linux. 

Proporciona edición no interactiva de archivos de texto, por eso se usa para automatizar la edición y tiene dos búferes: búfer de patrón y búfer de retención . Sed usa el búfer de patrones cuando lee archivos, línea por línea y esa línea leída actualmente se inserta en el búfer de patrones, mientras que el búfer de retención es un almacenamiento a largo plazo, captura la información, la almacena y la reutiliza cuando es necesario. Inicialmente, ambos están vacíos. El comando SED se usa para realizar diferentes operaciones sin siquiera abrir el archivo. 

Sintaxis general sed – 
OPCIONES sed… [SCRIPT] [INPUTFILE…] 

Primero cree un archivo .txt en el que voy a realizar operaciones para los comandos SED. En este blog, utilicé el archivo «a.txt» para explicar todos los ejemplos. El blog será demasiado largo si escribo el resultado de cada comando sed. Por lo tanto, puede consultar el mismo archivo para practicar todos los comandos inicialmente.  

[root@rhel7 ~]# cat a.txt
life isn't meant to be easy, life is meant to be lived.
Try to learn & understand something new everyday in life.
Respect everyone & most important love everyone.
Don’t hesitate to ask for love & don’t hesitate to show love too.
Life is too short to be shy.
In life, experience will help you differentiating right from wrong.

# Comencemos con Espaciado de archivo  
1: inserte una línea en blanco después de cada línea:  

[root@rhel7 ~]# sed G a.txt 

sed-output

2 – Para insertar dos líneas en blanco –  

[root@rhel7 ~]# sed 'G;G' a.txt

3 – Elimine las líneas en blanco e inserte una línea en blanco después de cada línea –  

[root@rhel7 ~]# sed '/^$/d;G' a.txt

4 – Inserta una línea negra encima de cada línea que coincida con “amor” –  

[root@rhel7 ~]# sed '/love/{x;p;x;}' a.txt

5 – Inserte una línea en blanco debajo de cada línea que coincida con “amor” –  

[root@rhel7 ~]# sed '/love/G' a.txt

6 – Insertar 5 espacios a la izquierda de cada línea –  

[root@rhel7 ~]# sed 's/^/     /' a.txt

# Numeración de líneas  
1 – Numera cada línea de un archivo (alineación izquierda). **=** se usa para numerar la línea. \t se usa para la tabulación entre el número y la oración – 

[root@rhel7 ~]# sed =  a.txt | sed 'N;s/\n/\t/'

2 – Numere cada línea de un archivo (número a la izquierda, alineado a la derecha). Este comando es similar a `cat -n filename`. 

[root@rhel7 ~]# sed = a.txt | sed 'N; s/^/     /; s/ *\(.\{4,\}\)\n/\1  /'

3 – Numere cada línea del archivo, solo si la línea no está en blanco –  

[root@rhel7 ~]#  sed '/./=' a.txt | sed '/./N; s/\n/ /'

# Borrar líneas  
1 – Borrar una línea en particular – 
Sintaxis: sed ‘nd’ filename  
Ejemplo:  

[root@rhel7 ~]# sed '5d' a.txt

2 – Eliminar la última línea 
Sintaxis: sed ‘$d’ nombre de archivo 

3 – Eliminar línea del rango x a y 
Sintaxis: sed ‘x,yd’ nombre de archivo 
Ejemplo:  

[root@rhel7 ~]# sed '3,5d' a.txt

4 – Eliminar desde la línea n hasta la última 
Sintaxis: sed ‘nth,$d’ filename 
Ejemplo: 

[root@rhel7 ~]# sed '2,$d' a.txt

5 – Elimine la línea de coincidencia del patrón – 
Sintaxis: sed ‘/patrón/d’ nombre de archivo 
Ejemplo:  

[root@rhel7 ~]# sed '/life/d' a.txt

6 – Eliminar líneas a partir de la línea n y cada 2 líneas a partir de ahí – 
Sintaxis: sed ‘n~2d’ nombre de archivo 
Ejemplo:  

[root@rhel7 ~]# sed '3~2d' a.txt

7 – Elimine las líneas que coincidan con el patrón y 2 líneas después de eso – 
Sintaxis: sed ‘/patrón/,+2d’ nombre de archivo 
Ejemplo:  

[root@rhel7 ~]# sed '/easy/,+2d' a.txt

8 – Eliminar líneas en blanco  

[root@rhel7 ~]# sed '/^$/d' a.txt

9 – Eliminar líneas vacías o que comiencen con “#” –  

[root@rhel7 ~]# sed -i '/^#/d;/^$/d' a.txt

# Ver/Imprimir los archivos 
Si queremos ver el contenido del archivo, entonces usamos el comando cat y si queremos ver el contenido inferior y superior de cualquier archivo, usamos herramientas como cabeza y cola. Pero, ¿y si necesitamos ver una sección en particular en medio de cualquier archivo? Aquí discutiremos cómo usar el comando SED para ver una sección de cualquier archivo. 

1 – Visualización de un archivo del rango x a y – 
Sintaxis: sed -n ‘x,yp’ filename 
Ejemplo: 

[root@rhel7 ~]# sed -n '2,5p' a.txt

2 – Ver el archivo completo excepto el rango dado – 
Sintaxis: sed ‘x,yd’ filename 
Ejemplo:  

[root@rhel7 ~]# sed '2,4d' a.txt

3 – Imprime la enésima línea del archivo – 
Sintaxis: sed -n ‘dirección’p nombre del archivo 
Ejemplo:  

[root@rhel7 ~]# sed -n '4'p a.txt

4 – Imprimir líneas desde la línea x a la línea y. 
Sintaxis: sed -n ‘x,y’p nombre de archivo 
Ejemplo:  

[root@rhel7 ~]# sed -n '4,6'p a.txt

5 – Imprime solo la última línea – 
Sintaxis: sed -n ‘$’p filename 

6 – Imprimir desde la línea n hasta el final del archivo – 
Sintaxis: sed -n ‘n,$p’ nombre de archivo 
Ejemplo: 

[root@rhel7 ~]# sed -n '3,$'p a.txt

Impresión de patrones 
7 – Imprima solo la línea que coincida con el patrón – 
Sintaxis: sed -n /patrón/p nombre de archivo 
Ejemplo: 

[root@rhel7 ~]# sed -n /every/p a.txt

8 – Imprimir líneas que coincidan con el patrón, es decir, desde la entrada hasta la línea x. 
Sintaxis: sed -n ‘/patrón/,xp’ nombre de archivo 
Ejemplo:  

[root@rhel7 ~]# sed -n '/everyone/,5p' a.txt

Siguiendo las líneas de impresión que coinciden con el patrón, la 3.ª línea coincide con el patrón «todos», por lo que se imprime desde la 3.ª línea hasta la 5.ª línea. Use $ en lugar de 5, si desea imprimir el archivo hasta el final. 

9: imprime líneas desde la línea x de la entrada hasta la línea que coincide con el patrón. Si el patrón no se encuentra, se imprime hasta el final del archivo. 
Sintaxis: sed -n ‘x,/patrón/p’ nombre de archivo 
Ejemplo: 

sed -n '1,/everyone/p' a.txt

10 – Imprima las líneas que coincidan con el patrón hasta las siguientes x líneas – 
Sintaxis: sed -n ‘/patrón/,+xp’ nombre de archivo 
Ejemplo:  

sed -n '/learn/,+2p' a.txt

# Reemplazo con el comando sed  
1 – Cambiar la primera aparición del patrón – 

[root@rhel7 ~]# sed 's/life/leaves/' a.txt

2 – Reemplazar la enésima aparición de un patrón en una línea – 
Sintaxis: sed ‘s/patrón_antiguo/patrón_nuevo/n’ nombre de archivo 
Ejemplo:  

[root@rhel7 ~]# sed 's/to/two/2' a.txt

Escribimos “2” porque reemplazamos la segunda ocurrencia. Así mismo se pueden utilizar 3, 4 etc según necesidad. 

3 – Reemplazo de todas las ocurrencias del patrón en una línea.  

[root@rhel7 ~]# sed 's/life/learn/g' a.txt

4 – Reemplace el patrón desde la enésima ocurrencia hasta todas las ocurrencias en una línea. 
Sintaxis: sed ‘s/patrón_antiguo/patrón_nuevo/ng’ nombre de archivo 
Ejemplo:  

[root@rhel7 ~]# sed 's/to/TWO/2g' a.txt

Nota: este comando sed reemplaza la segunda, tercera, etc. ocurrencias del patrón «a» con «DOS» en una línea. 

Si desea imprimir solo las líneas reemplazadas, use la opción «-n» junto con el indicador de impresión «/p» para mostrar solo las líneas reemplazadas: 

[root@rhel7 ~]# sed -n 's/to/TWO/p' a.txt

Y si desea imprimir las líneas reemplazadas dos veces, solo use el indicador de impresión «/ p» sin la opción «-n»-  

[root@rhel7 ~]# sed 's/to/TWO/p' a.txt

5 – Reemplazo de patrón en un número de línea específico. Aquí, “m” es el número de línea. 
Sintaxis: sed ‘ms/patrón_antiguo/patrón_nuevo/’ nombre de archivo 
Ejemplo:  

[root@rhel7 ~]# sed '3 s/every/each/' a.txt

Si desea imprimir solo las líneas reemplazadas:  

[root@rhel7 ~]# sed -n '3 s/every/each/p' a.txt

6 – Reemplazar string en un rango definido de líneas – 
Sintaxis: sed ‘x,ys/old_pattern/new_pattern/’ nombre de archivo 
donde, 
x = número de línea inicial 
e y = número de línea final 

Ejemplo : 

[root@rhel7 ~]# sed '2,5 s/to/TWO/' a.txt

Nota: se puede usar $ en lugar de «y» si deseamos cambiar el patrón hasta la última línea del archivo. 
Ejemplo :  

[root@rhel7 ~]# sed '2,$ s/to/TWO/' a.txt

7 – Si desea reemplazar el patrón para ignorar las mayúsculas y minúsculas (comenzando con mayúsculas o minúsculas), hay dos formas de reemplazar dichos patrones: 
primero, mediante el uso de la marca de impresión “/i” – 
Sintaxis: sed ‘s/old_pattern /nuevo_patrón/i’ nombre de archivo 
Ejemplo:  

[root@rhel7 ~]# sed 's/life/Love/i' a.txt

En segundo lugar, mediante el uso de expresiones regulares:  

[root@rhel7 ~]# sed 's/[Ll]ife/Love/g' a.txt

8 – Para reemplazar múltiples espacios con un solo espacio –  

[root@rhel7 clang]# sed 's/  */ /g' filename

9 – Reemplace un patrón seguido por otro patrón – 
Sintaxis: sed ‘/followed_pattern/ s/old_pattern/new_pattern/’ filename 
Ejemplo:  

[root@rhel7 ~]# sed '/is/ s/live/love/' a.txt

10 – Reemplazar un patrón por otro excepto en la línea n. 
Sintaxis: sed ‘n!s/old_pattern/new_pattern/’ nombre de archivo 
Ejemplo:  

[root@rhel7 ~]# sed -i '5!s/life/love/' a.txt

Publicación traducida automáticamente

Artículo escrito por Mausami_Inhe y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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