Éditeur de flux - Plage de motifs
Dans le chapitre précédent, nous avons appris comment SED gère une plage d'adresses. Ce chapitre explique comment SED prend en charge une plage de motifs. Une plage de motifs peut être un texte simple ou une expression régulière complexe. Prenons un exemple. L'exemple suivant imprime tous les livres de l'auteur Paulo Coelho.
[jerry]$ sed -n '/Paulo/ p' books.txt
En exécutant le code ci-dessus, vous obtenez le résultat suivant:
3) The Alchemist, Paulo Coelho, 197
5) The Pilgrimage, Paulo Coelho, 288
Dans l'exemple ci-dessus, le SED fonctionne sur chaque ligne et imprime uniquement les lignes qui correspondent à la chaîne Paulo.
Nous pouvons également combiner une plage de motifs avec une plage d'adresses. L'exemple suivant imprime des lignes commençant par la première correspondance d'Alchemist jusqu'à la cinquième ligne.
[jerry]$ sed -n '/Alchemist/, 5 p' books.txt
En exécutant le code ci-dessus, vous obtenez le résultat suivant:
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
Nous pouvons utiliser le caractère Dollar ($) pour imprimer toutes les lignes après avoir trouvé la première occurrence du motif. L'exemple suivant recherche la première occurrence du modèle et imprime immédiatement les lignes restantes du fichier
[jerry]$ sed -n '/The/,$ p' books.txt
En exécutant le code ci-dessus, vous obtenez le résultat suivant:
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
Nous pouvons également spécifier plusieurs plages de modèles à l'aide de l'opérateur virgule (,). L'exemple suivant imprime toutes les lignes qui existent entre les motifs Two et Pilgrimage.
[jerry]$ sed -n '/Two/, /Pilgrimage/ p' books.txt
En exécutant le code ci-dessus, vous obtenez le résultat suivant:
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
De plus, nous pouvons utiliser l'opérateur plus (+) dans une plage de motifs. L'exemple suivant recherche la première occurrence du motif Deux et imprime les 4 lignes suivantes après cela.
[jerry]$ sed -n '/Two/, +4 p' books.txt
En exécutant le code ci-dessus, vous obtenez le résultat suivant:
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
Nous n'avons fourni ici que quelques exemples pour vous familiariser avec SED. Vous pouvez toujours en savoir plus en essayant vous-même quelques exemples.