Hướng Dẫn Thao Tác Với Lệnh Sed

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

>> CLOUD – VPS

>> HOSTING

>> EMAIL

>> WEBSITE

>> TÊN MIỀN

>> SSL – LICENSE

Đánh giá bài viết
14/06/2023
Was this article helpful?
Đánh giá
Đánh giá bài viết
Đăng ký nhận tin

Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vinahost

    Bài viết liên quan
    Bình luận
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận