Lọc soạn thảo: sed

Một phần của tài liệu ĐẠI HỌC THĂNG LONG BỘ MÔN TIN HỌC THỰC HÀNH LINUX (Trang 54 - 56)

4. Lọc (Filters)

4.2. Lọc soạn thảo: sed

Lọc soạn thảo thực hiện thao tác sửa chữa trên đầu vào, thường là các file văn bản. Nó đọc lần lượt từng dòng văn bản của đầu vào và sửa chữa chúng, sau đó hiển thị ra dòng văn bản đã được sửa. Ở đây chúng ta sẽ xem xét một tiện ích lọc soạn thảo, đó là sed (stream editor).

Filter sed thực hiện sửa đổi dữ liệu đầu vào từ file hay từ STDIN. Sau khi tạo ra một phiên bản dữ liệu đã sửa chữa, kết quảđược gửi ra STDOUT. Chú ý là nội dung của file đầu vào là không thay đổi.

Cú pháp của sed:

$ sed option ‘edit-command’ filename

Trong đó filename là tên file đầu vào, edit-command là lệnh soạn thảo. Lệnh này được đặt trong dấu nháy đơn để tránh việc thay thế các ký tự đặt biệt. Tập các lệnh soạn thảo của

sed giống như trong hệ soạn thảo Ed, nó gồm có: ƒ Xoá dòng: d

Lệnh d sẽ xoá đi một số dòng nào đó theo yêu cầu của người dùng. Ví dụ: Xoá dòng thứ 3 trong datafile

$ sed ‘3 d’ datafile

Nếu muốn xoá một dãy các dòng liên tiếp thì cần chỉ rõ dòng bắt đầu và dòng kết thúc, cách nhau bởi dấu (,). Nếu muốn xoá đến dòng cuối cùng của file thì ta dùng ký tự đại diện $.

Ví dụ: Xoá từ dòng 3 đến hết

$ sed ‘3,$ d’ datafile

Ví dụ: Xoá các dòng chứa từ Vezy

$ sed ‘/Vezy/ d’ datafile

ƒ Thay thế văn bản: s

Lệnh s thực hiện thay thế nội dung văn bản theo mẫu. Ví dụ: Thay thế Vezy bằng Very

$ sed ‘s/Vezy/Very/’ datafile

Nếu muốn chỉ thay thế trên một dòng nào đó, bạn chỉ rõ số thứ tự dòng cần thay thế. Ví dụ: Thay thế Vezy bằng Very tại dòng 3

$ sed ‘3 s/Vezy/Very/’ datafile

Chú ý là việc thay thế như trên chỉ được thực hiện một lần duy nhất tại mỗi dòng. Nếu có nhiều từ cần thay thế xuất hiện trên một dòng thì chỉ có từđầu tiên được thay thế. Để thay thế toàn bộ các từ trên dòng, ta cần thêm vào ký hiệu g.

Ví dụ: Thay thế tất cả các từ Vezy thành Very

$ sed ‘s/Vezy/Very/g’ datafile

ƒ Thêm dòng văn bản: a

Lệnh a cho phép thêm dòng văn bản vào sau một dòng nào đó, nếu muốn thêm nhiều dòng văn bản ta phải có ký tự xuống dòng (\).

Ví dụ: Thêm 2 dòng văn bản sau dòng 3.

$ sed ‘3 a\ Sit down please\

Have good meal’ datafile

ƒ Chèn dòng văn bản: i

Lệnh i thực hiện giống lệnh a, tuy nhiên nó sẽ chèn thêm các dòng vào trước dòng được chỉ ra.

ƒ Thay thế dòng văn bản: c

Lệnh c cho phép thay thế một dòng bằng các dòng khác. Có thể thay thế cho nhiều dòng liên tiếp bằng cách dùng miền giá trị.

Ví dụ:Thay thế dòng 3 bằng dòng mới.

$ sed ‘3 c\

Get up please’ datafile

ƒ Tuỳ chọn -f

Lệnh sed cung cấp tuỳ chọn –f cho phép nhận các lệnh sửa đổi chứa trong một file cho trước.

Ví dụ: Thực hiện sửa đổi datafile bởi các lệnh trong file suadoi

$ cat > suadoi 2 d

Thang Long University s/fine/glad/g

$ sed -f suadoi datafile

Một phần của tài liệu ĐẠI HỌC THĂNG LONG BỘ MÔN TIN HỌC THỰC HÀNH LINUX (Trang 54 - 56)