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.

Cú pháp và tùy chọn của lệnh sed trong Linux
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ọn | Mô 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 , --silent | Tắt hiển thị kết quả trên terminal. |
-e | Thực thi nhiều lệnh cùng lúc. |
-f | Đọc lệnh sed từ file. |
-E , -r , --regexp-extended | Kích hoạt biểu thức chính quy mở rộng. |
--help | Hiển thị thông tin sử dụng. |
--posix | Vô 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. |
--version | Hiển thị phiên bản sed đang chạy trên hệ thống. |
-s ,--separate | Xem các file một cách riêng biệt, thay vì một dòng liên tục. |
-u ,--unbuffered | Giảm thiểu bộ đệm đầu vào và ra. |
-l N , --line-length=N | Xác định chiều dài ngắt dòng cho lệnh l (mặc định là 70). |
11 ví dụ cách sử dụng lệnh sed trong Linux
- Ví dụ 1: Thay thế một chuỗi bằng lệnh sed trong Linux
- Ví dụ 2: Thay thế lần xuất hiện thứ n của chuỗi trong dòng
- 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
- Ví dụ 4: Chỉ hiển thị dòng có văn bản thay thế
- Ví dụ 5: Thay thế chuỗi với trường hợp chữ hoa và chữ thường
- Ví dụ 6: Thay thế chuỗi ở một dòng nhất định bằng lệnh sed
- Ví dụ 7: Thay thế chuỗi trong phạm vi chỉ định
- Ví dụ 8: Nhân bản dòng được thay thế
- Ví dụ 9: Xóa một dòng cụ thể bằng lệnh sed trong Linux
- Ví dụ 10: Xóa dòng trong phạm vi chỉ định
- Ví dụ 11: Xóa từ dòng chỉ định đến dòng cuối cùng
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

Lư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.

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:

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”.

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ả:

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:

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:

Để 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:

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.

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

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”.

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

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ị.

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.

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.

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é.
Mọi người cũng xem
Tìm hiểu về lệnh dig trong Linux qua 10 ví dụ ứng dụng của lệnh trong Linux
Tổng hợp 19 ví dụ cụ thể cách sử dụng lệnh dpkg trong Linux
Cách dùng lệnh htop trong Linux để nắm bắt tiến trình hệ thống hiệu quả
Cách quản lý phần mềm hiệu quả nhất với lệnh apt trong Linux
Lệnh printf trong Linux – Công cụ xuất dữ liệu linh hoạt