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.