GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de Unix Sed:Impresión de líneas de archivos usando direcciones y patrones

Revisemos cómo imprimir líneas de archivos usando direcciones y patrones en esta primera parte del tutorial sed.

Estaremos publicando varios tutoriales increíbles de sed con ejemplos en las próximas semanas.

Introducción a Unix Sed

  • sed es un editor orientado a secuencias "no interactivo". Dado que es "no interactivo", se puede utilizar para automatizar la edición si se desea.
  • El nombre sed es una abreviatura de stream editor, y la utilidad deriva muchos de sus comandos del editor de línea ed (ed fue el primer editor de texto de UNIX).
  • Esto le permite editar varios archivos o realizar operaciones de edición comunes sin tener que abrir vi o emacs.
  • sed lee desde un archivo o desde su entrada estándar y genera su salida estándar.
  • sed tiene dos búferes que se denominan búfer de patrón y búfer de retención. Ambos están inicialmente vacíos.

Metodología de trabajo Unix Sed

Esto se llama como un ciclo de ejecución. El ciclo continúa hasta que se alcanza el final del archivo/entrada.

  1. Leer una línea completa desde stdin/file.
  2. Elimina cualquier salto de línea final.
  3. Coloca la línea en su búfer de patrón.
  4. Modifique el búfer de patrones de acuerdo con los comandos proporcionados.
  5. Imprime el búfer de patrones en la salida estándar.

Operación de impresión en Sed

El comando Sed de Linux le permite imprimir solo líneas específicas según el número de línea o las coincidencias de patrones. “p” es un comando para imprimir los datos del búfer de patrones.

Para suprimir la impresión automática del espacio del patrón, use el comando -n con sed. La opción sed -n no imprimirá nada, a menos que se encuentre una solicitud explícita para imprimir.

Syntax:
# sed -n 'ADDRESS'p filename

# sed -n '/PATTERN/p' filename

Primero creemos el archivo geekstuff.txt que se usará en todos los ejemplos mencionados a continuación.

# cat thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

Ejemplos de formato de DIRECCIÓN de 5 Sed

Formato de dirección Sed 1:NÚMERO

Esto coincidirá solo con la línea N en la entrada.

# sed -n 'N'p filename

Por ejemplo, 3p imprime la tercera línea del archivo de entrada thegeekstuff.txt como se muestra a continuación.

# sed -n '3'p thegeekstuff.txt
3. Hardware

Formato de dirección Sed 2:NÚMERO1~NÚMERO2

M~N con el comando "p" imprime cada línea N a partir de la línea M.

# sed -n 'M~N'p filename

Por ejemplo, 3~2p imprime cada 2.ª línea a partir de la 3.ª línea, como se muestra a continuación.

# sed -n '3~2'p thegeekstuff.txt
3. Hardware
5. Storage
7. Productivity (Too many technologies to explore, not much time available)
9. Software Development

Formato de dirección Sed 3:INICIO,FIN

M,N con el comando "p" imprime la línea M a la línea N.

# sed -n 'M,N'p filename

Por ejemplo, 4,8p se imprime desde la 4.ª línea hasta la 8.ª línea desde el archivo de entrada thegeekstuff.txt

# sed -n '4,8'p thegeekstuff.txt
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design

Formato de dirección Sed 4:'$' Última línea

El comando $ con "p" solo coincide con la última línea de la entrada.

# sed -n '$'p filename

Por ejemplo, $p imprime solo la última línea como se muestra a continuación.

# sed -n '$'p thegeekstuff.txt
10.Windows- Sysadmin, reboot etc.

Formato de dirección Sed 5:NÚMERO,$

N,$ con el comando "p" se imprime desde la línea N hasta el final del archivo.

# sed -n 'N,$p' filename

Por ejemplo, 4,$p se imprime desde la cuarta línea hasta el final del archivo.

# sed -n '4,$p' thegeekstuff.txt
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

Ejemplos de formato de patrón de 6 sed

Patrón Sed Formato 1:PATRÓN

PATTERN podría ser una expresión regular de Unix. El siguiente comando imprime solo la línea que coincide con el patrón dado.

# sed -n /PATTERN/p filename

Por ejemplo, lo siguiente imprime solo la línea que coincide con el patrón "Sysadmin".

# sed -n /Sysadmin/p thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
10.Windows- Sysadmin, reboot etc.

Formato de patrón Sed 2:/PATRÓN/,DIRECCIÓN


# sed -n ‘/PATRÓN/,Np’ nombre de archivo

Por ejemplo, las siguientes líneas de impresión coinciden con el patrón en la línea N, desde la entrada. La 3.ª línea coincide con el patrón "Hardware", por lo que se imprime desde la 3.ª línea hasta la 6.ª línea.

# sed -n '/Hardware/,6p' thegeekstuff.txt
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites

Patrón Sed Formato 3:DIRECCIÓN,/PATRÓN/

Imprime desde la línea N de la entrada hasta la línea que coincide con el patrón. Si el patrón no coincide, se imprime hasta el final de la entrada.

# sed -n ‘N,/PATTERN/p’ filename

Por ejemplo, la 4.ª línea coincide con el patrón "Seguridad", por lo que se imprime desde la 3.ª línea hasta la 4.ª línea.

# sed -n '3,/Security/p' thegeekstuff.txt
3. Hardware
4. Security (Firewall, Network, Online Security etc)

Formato de patrón Sed 4:/PATRÓN/,$

Imprime desde la línea que coincide con el patrón dado hasta el final del archivo.

# sed -n ‘/PATTERN/,$p’ filename

# sed -n '/Website/,$p' thegeekstuff.txt
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

Patrón Sed Formato 5:/PATRÓN/,+N

Imprime las líneas que coinciden con el patrón y las siguientes N líneas que siguen a la línea coincidente.

# sed -n ‘/PATTERN/,+Np’ filename

Por ejemplo, siguiente imprime la quinta línea que coincide con el patrón /Almacenamiento/ y las siguientes dos líneas que siguen a /Almacenamiento/.

# sed -n '/Storage/,+2p' thegeekstuff.txt
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)

Sed Patrón Formato 6:/PATRÓN/,/PATRÓN/

Imprime la sección del archivo entre dos expresiones regulares (incluida la línea coincidente).

# sed -n ‘/P1/,/P2/p’ filename

Por ejemplo, la quinta línea coincide con "Almacenamiento" y la octava línea coincide con "Diseño", por lo que se imprime del 5 al 8.

# sed -n '/Storage/,/Design/p' thegeekstuff.txt
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design

Linux
  1. ¿Extraer valor entre dos patrones de búsqueda en la misma línea?

  2. Eliminación de líneas específicas de un archivo en la línea de comandos de Linux

  3. Cómo contar líneas en un archivo en UNIX/Linux

  4. Encuentre y reemplace texto en un archivo entre un rango de líneas usando sed

  5. ¿Cómo inserto texto en la primera línea de un archivo usando sed?

Cómo eliminar líneas vacías en archivos usando Grep, Sed y Awk

Tutorial de Unix Sed:busque y reemplace texto dentro de un archivo usando RegEx

Tutorial de Unix Sed:eliminar líneas de archivos usando direcciones y patrones

Tutorial de Unix Sed:Cómo escribir en un archivo usando Sed

Tutorial de Unix Sed:anexar, insertar, reemplazar y contar líneas de archivos

Tutorial de Unix Sed:operación de archivos de varias líneas con 6 ejemplos prácticos