Bài viết này sẽ hướng dẫn bạn cách Thao Tác Với Lệnh Sed. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về support@vinahost.vn hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php.
sed, viết tắt của Stream EDitor, là một công cụ xử lý văn bản mạnh mẽ và là một tiện ích UNIX lâu đời nhất và phổ biến nhất. Nó cung cấp cho người dùng nhiều tính năng hữu ích như: tra cứu, tìm kiếm và chỉnh sửa, chèn hay xóa nội dung…
Bằng việc sử dụng sed, ta có thể chỉnh sửa nội dung của một file ngay cả khi không mở file đó ra, điều này khiến việc tìm và chỉnh sửa nội dung file nhanh chóng hơn là việc mở file ra và tìm tới nội dung cần sửa.
Ở bài viết này, mình sẽ hướng dẫn cho anh em một số cách dùng phổ biến của lệnh sed.
Thay thế một chuỗi
# sed ‘s/before/after/’ test.txt |
Cờ “s” trong lệnh trên là viết tắt của substitution, dấu “/” là để phân cách các thành phần. Mục đích của lệnh trên là tìm kiếm chuỗi before và thay thế bằng chuỗi after trong file có tên test.txt
Mặc định, lệnh sed sẽ thay thế chuỗi đầu tiên mà nó tìm được ở mỗi dòng, và các chuỗi ở vị trí tiếp theo của dòng sẽ không bị thay thế.
Thay thế một chuỗi được tìm thấy ở vị trí nhất định
# sed ‘s/before/after/2’ test.txt |
Cờ /1, /2…có chức năng chỉ định vị trí tìm thấy chuỗi cần thay thế ở trên mỗi dòng.
Ví dụ ở lệnh trên, lệnh sẽ thực hiện thay thế chuỗi before ở vị trí thứ 2 mà nó tìm được ở trên mỗi dòng.
Thay thế một chuỗi được tìm thấy ở tất cả các dòng
# sed ‘s/before/after/g’ test.txt |
Cờ “g” trong lệnh trên là viết tắt của global, ý chỉ lệnh sed sẽ tìm và thay thế chuỗi được tìm thấy ở tất cả các dòng.
Ví dụ ở lệnh trên, lệnh sẽ thực hiện thay thế tất cả chuỗi before tìm được ở tất cả các dòng thành after.
Đóng ngoặc chữ cái đầu tiên của mỗi từ
# echo “Hello, Welcome to Vinahost” | sed ‘s/\(\b[A-Z]\)/\(\1\)/g’ |
Ví dụ lệnh trên sẽ đóng ngoặc đơn các chữ cái đầu tiền của mỗi từ nếu chữ cái đó viết hoa. Kết quả như sau:
(H)ello, (W)elcome to (V)inahost |
Mục đích: cho đẹp
Thay thế một chuỗi ở một dòng nhất định
# sed ‘3 s/before/after/’ test.txt |
Ví dụ ở lệnh trên, lệnh sẽ thực hiện thay thế chuỗi before tìm được ở dòng thứ 3 của file thành chuỗi after.
Lặp lại dòng có chuỗi cần thay thế
# sed ‘s/before/after/p’ test.txt |
Cờ “p” trong lệnh trên là viết tắt của print, ý chỉ lệnh sẽ in một dòng hai lần nếu dòng có chuỗi cần thay thế, và lệnh sẽ thay thế chuỗi đầu tiên tìm được ở mỗi dòng. Nếu dòng không có chuỗi cần thay thế, dòng đó sẽ chỉ được in ra một lần.
Thay thế một chuỗi trong một khoảng dòng nhất định
- Ta có thể ấn định một khoảng dòng nhất định để tìm và thay thế chuỗi
# sed ‘1,3 s/before/after/’ test.txt |
Ví dụ ở lệnh trên, lệnh sẽ thực hiện thay thế chuỗi before tìm được ở dòng từ 1 tới 3 của file thành chuỗi after.
- Tìm ở một dòng nhất định cho đến hết file
# sed ‘2,$ s/before/after/p’ test.txt |
Cờ “$” trong lệnh trên đại diện cho dòng cuối cùng của file. Ví dụ ở lệnh trên, lệnh sẽ thực hiện thay thế chuỗi before tìm được ở dòng từ 2 tới cuối cùng của file thành chuỗi after.
Xóa các dòng nhất định của file
Ta có thể dùng lệnh sed để xóa các dòng của một file.
- Xóa một dòng nhất định
# sed ‘5d’ test.txt |
Ở ví dụ trên, lệnh sẽ xóa dòng thứ 5 của file.
- Xóa dòng cuối dùng
# sed ‘$d’ test.txt |
Như đã trình bày ở trên, cờ “$” đại diện cho dòng cuối cùng của file, vì vậy ở ví dụ trên, lệnh sẽ xóa dòng cuối cùng của file.
- Xóa một khoảng dòng nhất định
# sed ‘3,6d’ test.txt |
Ở ví dụ trên, lệnh sẽ xóa các dòng từ 3 tới 6 của file.
- Xóa từ một dòng nhất định tới hết
# sed ‘5,$d’ test.txt |
Ở ví dụ trên, lệnh sẽ xóa các dòng từ 5 tới hết file.
- Xóa dòng có chứa một chuỗi nhất định
# sed ‘/before/d’ test.txt |
Ở ví dụ trên, lệnh sẽ xóa các dòng có chuỗi before.
Chúc quý khách thực hiện thành công!
THAM KHẢO CÁC DỊCH VỤ TẠI VINAHOST
>> SERVER – COLOCATION – CDN
>> HOSTING
>> WEBSITE
>> TÊN MIỀN