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.
- Leer una línea completa desde stdin/file.
- Elimina cualquier salto de línea final.
- Coloca la línea en su búfer de patrón.
- Modifique el búfer de patrones de acuerdo con los comandos proporcionados.
- 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