Stream Editor - Pattern Range

Nel capitolo precedente, abbiamo imparato come SED gestisce un intervallo di indirizzi. Questo capitolo spiega come SED si prende cura di una gamma di pattern. Un intervallo di pattern può essere un testo semplice o un'espressione regolare complessa. Facciamo un esempio. L'esempio seguente stampa tutti i libri dell'autore Paulo Coelho.

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

Eseguendo il codice sopra, ottieni il seguente risultato:

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

Nell'esempio sopra, il SED opera su ogni riga e stampa solo quelle righe che corrispondono alla stringa Paulo.

Possiamo anche combinare un intervallo di pattern con un intervallo di indirizzi. L'esempio seguente stampa righe che iniziano con la prima corrispondenza di Alchemist fino alla quinta riga.

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

Eseguendo il codice sopra, ottieni il seguente risultato:

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

Possiamo usare il carattere Dollar ($) per stampare tutte le righe dopo aver trovato la prima occorrenza del pattern. L'esempio seguente trova la prima occorrenza del motivo The e stampa immediatamente le righe rimanenti dal file

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

Eseguendo il codice sopra, ottieni il seguente risultato:

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

Possiamo anche specificare più di un intervallo di pattern utilizzando l'operatore virgola (,). L'esempio seguente stampa tutte le linee che esistono tra i pattern Two e Pilgrimage.

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

Eseguendo il codice sopra, ottieni il seguente risultato:

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

Inoltre, possiamo usare l'operatore più (+) all'interno di un intervallo di pattern. L'esempio seguente trova la prima occorrenza del motivo Due e stampa le successive 4 righe successive.

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

Eseguendo il codice sopra, ottieni il seguente risultato:

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

Abbiamo fornito qui solo alcuni esempi per farti conoscere SED. Puoi sempre saperne di più provando alcuni esempi da solo.