NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
22/04/2024
Lượt xem

Hướng dẫn cách sử dụng lệnh sed trong Linux

22/04/2024
12 phút đọc
Lượt xem

Đánh giá

5/5 - (184 bình chọn)

Lệnh sed thường có thể dùng để thực hiện nhiều thao tác với file như tìm kiếm, thay thế, chèn và xóa nội dung. Bài viết này, mình sẽ hướng dẫn cách sử dụng lệnh sed trong Linux hiệu quả nhất.

Những điểm chính

  • Định nghĩa về lệnh sed: là công cụ stream editor mạnh mẽ trong Linux, giúp chỉnh sửa văn bản trực tiếp từ dòng lệnh.
  • Cú pháp và tùy chọn: Trình bày cú pháp và các tùy chọn của lệnh sed giúp người dùng thao tác và chỉnh sửa nội dung dễ dàng.
  • Ví dụ cách sử dụng lệnh sed: Cung cấp 11 ví dụ thực tế về cách sử dụng sed để chỉnh sửa văn bản, thay thế chuỗi, xóa và lọc dữ liệu trong file.
  • Biết được Vietnix – Nhà cung cấp dịch vụ VPS uy tín, an toàn và dễ dàng quản lý.

Lệnh sed trong Linux là gì?

Lệnh sed trong Linux (Stream Editor) là một công cụ hữu ích dùng để xử lý văn bản trong file theo dòng. Lệnh này có thể thực hiện nhiều tác vụ như tìm kiếm, thay thế, xóa, thêm, trích xuất và thao tác dữ liệu văn bản một cách hiệu quả mà không cần file mở file trên terminal.

Lệnh sed trong Linux là một công cụ giúp xử lý văn bản theo dòng
Lệnh sed trong Linux là một công cụ giúp xử lý văn bản theo dòng

Cú pháp lệnh sed trong Linux

Lệnh sed còn hỗ trợ biểu thức chính quy để so sánh và khớp các mẫu văn bản phức tạp. Cú pháp chung của sed như sau:

sed OPTIONS... [SCRIPT] [INPUTFILE...]

Trong đó:

  • OPTIONS: Là các tùy chọn
  • [SCRIPT]: Định nghĩa lệnh hoặc chuỗi lệnh cần thực thi trên file input.
  • [INPUTFILE…]: Các file input cần được xử lí.

Các tùy chọn của lệnh sed trong Linux

Tùy chọnMô tả
--i, --in-place [=SUFFIX]Dùng để chỉnh sửa file trực tiếp bằng cách ghi đè lên file gốc.
-n, --quiet, --silentTắt hiển thị kết quả trên terminal.
-eThực thi nhiều lệnh cùng lúc.
-fĐọc lệnh sed từ file.
-E, -r, --regexp-extendedKích hoạt biểu thức chính quy mở rộng.
--helpHiển thị thông tin sử dụng.
--posixVô hiệu hóa các phần mở rộng của POSIX sed để đơn giản hóa việc viết script.
--versionHiển thị phiên bản sed đang chạy trên hệ thống.
-s,--separateXem các file một cách riêng biệt, thay vì một dòng liên tục.
-u,--unbufferedGiảm thiểu bộ đệm đầu vào và ra.
-l N, --line-length=NXác định chiều dài ngắt dòng cho lệnh l (mặc định là 70).

Trước tiên, mình sẽ tạo file vietnixfile.txt làm input cho các ví dụ bên dưới, với nội dung bằng lệnh:

$cat > vietnixfile.txt
Input của vietnixfile.txt
Input của vietnixfile.txt

iconLưu ý

Lệnh sed không chỉnh sửa trực tiếp file gốc trừ khi bạn dùng tùy chọn -i. Mặc định, các thay đổi chỉ hiển thị trên màn hình. Để lưu kết quả vào file mới mà không ảnh hưởng file gốc, hãy thêm >newfilename.txt vào cuối lệnh.

Ví dụ 1: Thay thế một chuỗi bằng lệnh sed trong Linux

Lệnh sed có thể thay thế chuỗi, bằng cách tìm kiếm chuỗi đã chỉ định và thay thế bằng chuỗi mới. Để thực hiện hiện bạn có thể dùng lệnh kết hợp với tùy chọn s và dấu phân cách (ví dụ: “/”) để tách các phần trong văn bản, cú pháp cụ thể:

$sed 's/unix/linux/' vietnixfile.txt

Kết quả: Lệnh sẽ thay thế các từ “unix” thành “linux”, như ảnh bên dưới đây.

Thay thế chuỗi
Thay thế chuỗi

Ví dụ 2: Thay thế lần xuất hiện cụ thể trong dòng

Để thay thế văn bản trùng khớp với dòng thứ nhất, thứ hai…, bạn có thể dùng flag /1, /2… Trong ví dụ này, từ “unix” xuất hiện lần thứ 2 thành “linux”, với cú pháp như sau:

$sed 's/unix/linux/3' vietnixfile.txt

Kết quả: Lệnh sẽ chỉ thay đổi từ “unix” ở dòng thứ 3 như hình minh họa dưới đây:

Thay thế lần xuất hiện cụ thể
Thay thế lần xuất hiện cụ thể

Ví dụ 3: Thay thế tất cả các lần xuất hiện của chuỗi bằng lệnh sed

Mặc định, lệnh sed sẽ chỉ thay thế lần xuất hiện đầu tiên của chuỗi, nên nếu muốn thay đổi tất cả các từ trong chuỗi, bạn có thể sử dụng flag /g, cú pháp cụ thể như sau:

$sed 's/unix/linux/g' vietnixfile.txt

Kết quả: Từ “unix” ở tất cả các dòng sẽ được thay thế thành từ “linux”.

Thay thế tất cả lần xuất hiện
Thay thế tất cả lần xuất hiện

Ví dụ 4: Chỉ hiển thị dòng có văn bản thay thế

Theo mặc định, lệnh sed sẽ hiển thị toàn bộ nội dung file cùng với văn bản đã thay thế. Nếu bạn chỉ muốn xem các dòng đã thay đổi, hãy thêm tùy chọn -n và tham số p, cú pháp như sau:

sed -n 's/unix/linux/3p' vietnixfile.txt

Kết quả:

Hiển thị dòng đã thay đổi
Hiển thị dòng đã thay đổi

Ví dụ 5: Thay thế chuỗi với trường hợp chữ hoa và chữ thường

Lệnh sed sẽ phân biệt chữ hoa và chữ thường, ví dụ, nội dung sau chứa từ “Unix” với chữ cái đầu tiên viết hoa:

Văn bản input
Văn bản input

Khi bạn dùng lệnh dưới đây:

sed 's/unix/linux/' vietnixfile.txt

Kết quả: Như hình dưới đây, lệnh sẽ chỉ thay đổi được từ “unix” chữ thường:

lenh sed trong linux 7
Thay thế chuỗi

Để bỏ qua trường hợp chữ hoa chữ thường, bạn có thể thêm tham số i, như sau:

sed 's/unix/linux/i' vietnixfile.txt

Kết quả: Lệnh sẽ thay thế từ unix bất kể là chữ hoa hay thường như hình minh họa dưới đây:

Chuỗi đã được thay thế bỏ qua chữ hoa và thường
Chuỗi đã được thay thế bỏ qua chữ hoa và thường

Ví dụ 6: Thay thế chuỗi ở một dòng nhất định bằng lệnh sed

Bên cạnh đó, bạn có thể sử dụng lệnh sed để thay thế một chuỗi cụ thể bằng cách thêm tham số s. Ví dụ, với văn bản dưới đây bạn muốn thay đổi từ “unix” ở dòng thứ 1, hãy nhập lệnh sau:

$sed '2 s/unix/debian/' vietnixfile.txt

Kết quả: Từ “unix” ở dòng thứ nhất sẽ được thay đổi thành “debian” và ở các dòng khác từ “unix” vẫn giữ nguyên không thay đổi.

Thay thế chuỗi với dòng nhất định
Thay thế chuỗi với dòng nhất định

Ví dụ 7: Thay thế chuỗi trong phạm vi chỉ định

Để thay đổi chuỗi trong một phạm vi cụ thể mà không phải là toàn bộ văn bản, bạn sử dụng cú pháp sau, với dấu # thứ nhất chỉ dòng bắt đầu và dấu # thứ hai chỉ dòng kết thúc:

sed '#,# s/old_string/new_string/' filename.txt
icon

Ví dụ: Bạn muốn thay thế từ “unix” nằm ở dòng thứ 1 và 3 trong file vietnixfile.txt , bạn chạy lệnh sau:

sed '1,3 s/unix/linux/' vietnixfile.txt

Kết quả: Lệnh sẽ thay thế từ “unix” ở dòng thứ 1 và 3 thành “linux”.

Thay thế chuỗi trong phạm vị chỉ định
Thay thế chuỗi trong phạm vị chỉ định

Ví dụ 8: Nhân bản dòng được thay thế

Ngoài ra, khi bạn sử dụng Flag /p đi kèm với lệnh sed cho phép hiển thị hai lần dòng vừa được thay thế:

$sed 's/unix/linux/p' vietnixfile.txt
Các dòng đã được nhân bản
Các dòng đã được nhân bản

Ví dụ 9: Xóa một dòng cụ thể bằng lệnh sed trong Linux

Để xóa một dòng cụ thể, bạn sử dụng lệnh sed kết hợp với ký hiệu # và tham số d. Ví dụ, để xóa dòng thứ 2 trong file vietnixfile.txt, bạn nhập lệnh sau:

sed '2d' vietnixfile.txt

Kết quả: Dòng thứ 2 sẽ bị xóa khỏi màn hình hiển thị.

Dòng thứ 2 đã xóa
Dòng thứ 2 đã xóa

Ví dụ 10: Xóa dòng trong phạm vi chỉ định

Nếu bạn muốn xóa dòng trong một phạm vi cụ thể hãy dùng lệnh sed kết hợp với dấu # và tham số d. Ví dụ, để xóa từ dòng 2 đến dòng 4, bạn hãy nhập lệnh sau:

sed '2,3d' vietnixfile.txt

Kết quả: Nội dung từ dòng 2 đến dòng 3 sẽ bị xóa đi.

Dòng thứ 2 đến 3 đã được xóa
Dòng thứ 2 đến 3 đã được xóa

Ví dụ 11: Xóa từ dòng chỉ định đến dòng cuối cùng

Nếu bạn muốn xóa từ dòng thứ 3 đến dòng cuối cùng bạn nhập lệnh sau:

sed '3,$d' vietnixfile.txt

Kết quả: Lệnh này sẽ cho phép bạn xóa từ dòng đã được chỉ định là dòng thứ 3 đến dòng cuối cùng.

Xóa theo dòng chỉ định đến cuối
Xóa theo dòng chỉ định đến cuối

Vietnix – Nhà cung cấp dịch vụ VPS uy tín, an toàn và dễ dàng quản lý

Dịch vụ VPS của Vietnix mang đến giải pháp máy chủ ảo ổn định và hiệu suất cao, đáp ứng đa dạng nhu cầu từ cá nhân đến doanh nghiệp. Với giao diện quản trị hiện đại, người dùng dễ dàng quản lý và tùy chỉnh máy chủ, từ việc khởi động, cài đặt lại hệ điều hành đến theo dõi tài nguyên hệ thống. Vietnix cam kết uptime 99.9% và hỗ trợ kỹ thuật 24/7 qua nhiều kênh như livechat, hotline, Facebook, Zalo OA, đảm bảo phản hồi trong 5 phút, giúp khách hàng an tâm vận hành hệ thống.

VPS SSD của Vietnix nổi bật với tốc độ vượt trội nhờ sử dụng 100% ổ cứng SSD tốc độ cao và phần cứng tiên tiến. Hạ tầng được xây dựng trên Datacenter chuẩn Tier 3, cùng tốc độ mạng 200 Mbps trong nước và 20 Mbps quốc tế, đảm bảo truyền tải dữ liệu nhanh chóng, ổn định. Dịch vụ đi kèm tính năng sao lưu tự động miễn phí hàng tuần, tùy chọn khôi phục dữ liệu dễ dàng và khả năng nâng cấp cấu hình nhanh chóng chỉ với vài thao tác đơn giản. Đạt các chứng nhận ISO 27001:2022 và ISO 9001:2015, VPS SSD của Vietnix là lựa chọn hoàn hảo cho sự an toàn và hiệu suất cao.

Thông tin liên hệ:

  • Hotline: 18001093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Website: https://vietnix.vn/

Bài viết này đã liệt kê một số trường hợp sử dụng phổ biến nhất của lệnh sed trong Linux, giúp ta chỉnh sửa, tìm kiếm nội dung mà không cần phải mở file. Nếu có câu hỏi gì về lệnh sed trong Linux thì bạn đọc hãy để lại ở phần comment bên dưới nhé.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

PHẦN CỨNG MẠNH MẼ

HỖ TRỢ 24/7

ĐĂNG KÝ NGAY
Khi mua Hosting/VPS
ĐĂNG KÝ NGAY
03/02/2025 - 15/02/2025
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG