Trình chỉnh sửa luồng - Phạm vi mẫu
Trong chương trước, chúng ta đã tìm hiểu cách SED xử lý một dải địa chỉ. Chương này trình bày cách SED quản lý một phạm vi mẫu. Một phạm vi mẫu có thể là một văn bản đơn giản hoặc một biểu thức chính quy phức tạp. Chúng ta hãy lấy một ví dụ. Ví dụ sau đây in tất cả các cuốn sách của tác giả Paulo Coelho.
[jerry]$ sed -n '/Paulo/ p' books.txt
Khi thực thi đoạn mã trên, bạn nhận được kết quả sau:
3) The Alchemist, Paulo Coelho, 197
5) The Pilgrimage, Paulo Coelho, 288
Trong ví dụ trên, SED hoạt động trên mỗi dòng và chỉ in những dòng phù hợp với chuỗi Paulo.
Chúng tôi cũng có thể kết hợp dải mẫu với dải địa chỉ. Ví dụ sau in các dòng bắt đầu bằng trận đầu tiên của Nhà giả kim cho đến dòng thứ năm.
[jerry]$ sed -n '/Alchemist/, 5 p' books.txt
Khi thực thi đoạn mã trên, bạn nhận được kết quả sau:
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
Chúng ta có thể sử dụng ký tự Dollar ($) để in tất cả các dòng sau khi tìm thấy lần xuất hiện đầu tiên của mẫu. Ví dụ sau đây tìm lần xuất hiện đầu tiên của mẫu The và in ngay các dòng còn lại từ tệp
[jerry]$ sed -n '/The/,$ p' books.txt
Khi thực thi đoạn mã trên, bạn nhận được kết quả sau:
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
Chúng tôi cũng có thể chỉ định nhiều hơn một phạm vi mẫu bằng cách sử dụng toán tử dấu phẩy (,). Ví dụ sau đây in tất cả các dòng tồn tại giữa các mẫu Hai và Hành hương.
[jerry]$ sed -n '/Two/, /Pilgrimage/ p' books.txt
Khi thực thi đoạn mã trên, bạn nhận được kết quả sau:
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
Ngoài ra, chúng ta có thể sử dụng toán tử dấu cộng (+) trong một phạm vi mẫu. Ví dụ sau tìm lần xuất hiện đầu tiên của mẫu Hai và in 4 dòng tiếp theo sau đó.
[jerry]$ sed -n '/Two/, +4 p' books.txt
Khi thực thi đoạn mã trên, bạn nhận được kết quả sau:
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
Chúng tôi chỉ cung cấp ở đây một số ví dụ để bạn làm quen với SED. Bạn luôn có thể tìm hiểu thêm bằng cách tự mình thử một vài ví dụ.