Stream Editor: rango de patrones

En el capítulo anterior, aprendimos cómo SED maneja un rango de direcciones. Este capítulo cubre cómo SED se encarga de un rango de patrones. Un rango de patrón puede ser un texto simple o una expresión regular compleja. Tomemos un ejemplo. El siguiente ejemplo imprime todos los libros del autor Paulo Coelho.

[jerry]$ sed -n '/Paulo/ p' books.txt

Al ejecutar el código anterior, obtiene el siguiente resultado:

3) The Alchemist, Paulo Coelho, 197 
5) The Pilgrimage, Paulo Coelho, 288

En el ejemplo anterior, el SED opera en cada línea e imprime solo aquellas líneas que coinciden con la cadena Paulo.

También podemos combinar un rango de patrones con un rango de direcciones. El siguiente ejemplo imprime líneas comenzando con la primera coincidencia de Alchemist hasta la quinta línea.

[jerry]$ sed -n '/Alchemist/, 5 p' books.txt

Al ejecutar el código anterior, obtiene el siguiente resultado:

3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5) The Pilgrimage, Paulo Coelho, 288

Podemos usar el carácter de dólar ($) para imprimir todas las líneas después de encontrar la primera aparición del patrón. El siguiente ejemplo busca la primera aparición del patrón The e imprime inmediatamente las líneas restantes del archivo

[jerry]$ sed -n '/The/,$ p' books.txt

Al ejecutar el código anterior, obtiene el siguiente resultado:

2) The Two Towers, J. R. R. Tolkien, 352 
3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864

También podemos especificar más de un rango de patrones usando el operador coma (,). El siguiente ejemplo imprime todas las líneas que existen entre los patrones Dos y Peregrinaje.

[jerry]$ sed -n '/Two/, /Pilgrimage/ p' books.txt

Al ejecutar el código anterior, obtiene el siguiente resultado:

2) The Two Towers, J. R. R. Tolkien, 352 
3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5) The Pilgrimage, Paulo Coelho, 288

Además, podemos usar el operador más (+) dentro de un rango de patrón. El siguiente ejemplo encuentra la primera aparición del patrón Dos e imprime las siguientes 4 líneas después de eso.

[jerry]$ sed -n '/Two/, +4 p' books.txt

Al ejecutar el código anterior, obtiene el siguiente resultado:

2) The Two Towers, J. R. R. Tolkien, 352 
3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864

Hemos proporcionado aquí solo algunos ejemplos para que se familiarice con SED. Siempre puede obtener más información probando algunos ejemplos por su cuenta.