Stream Editor - Musterbereich

Im vorherigen Kapitel haben wir gelernt, wie SED mit einem Adressbereich umgeht. In diesem Kapitel wird beschrieben, wie SED einen Musterbereich verwaltet. Ein Musterbereich kann ein einfacher Text oder ein komplexer regulärer Ausdruck sein. Nehmen wir ein Beispiel. Das folgende Beispiel druckt alle Bücher des Autors Paulo Coelho.

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

Wenn Sie den obigen Code ausführen, erhalten Sie das folgende Ergebnis:

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

Im obigen Beispiel arbeitet die SED mit jeder Zeile und druckt nur die Zeilen, die mit der Zeichenfolge Paulo übereinstimmen.

Wir können auch einen Musterbereich mit einem Adressbereich kombinieren. Im folgenden Beispiel werden Zeilen gedruckt, die mit der ersten Übereinstimmung von Alchemist bis zur fünften Zeile beginnen.

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

Wenn Sie den obigen Code ausführen, erhalten Sie das folgende Ergebnis:

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

Wir können das Dollarzeichen ($) verwenden, um alle Zeilen zu drucken, nachdem wir das erste Auftreten des Musters gefunden haben. Das folgende Beispiel findet das erste Auftreten des Musters The und druckt sofort die verbleibenden Zeilen aus der Datei

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

Wenn Sie den obigen Code ausführen, erhalten Sie das folgende Ergebnis:

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

Mit dem Komma (,) können wir auch mehr als einen Musterbereich angeben. Im folgenden Beispiel werden alle Linien gedruckt, die zwischen den Mustern Zwei und Pilgerfahrt bestehen.

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

Wenn Sie den obigen Code ausführen, erhalten Sie das folgende Ergebnis:

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

Zusätzlich können wir den Pluszeichen (+) innerhalb eines Musterbereichs verwenden. Das folgende Beispiel findet das erste Auftreten des Musters Zwei und druckt die nächsten 4 Zeilen danach.

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

Wenn Sie den obigen Code ausführen, erhalten Sie das folgende Ergebnis:

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

Wir haben hier nur einige Beispiele geliefert, um Sie mit SED vertraut zu machen. Sie können immer mehr erfahren, indem Sie einige Beispiele selbst ausprobieren.