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
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