Nội dung bài viết
#

Sed Command trong Linux là gì? Một số ví dụ và cách sử dụng

Sed command trong unix

Lệnh SED trong Linux / Unix là gì?

Lệnh SED trong LINUX / UNIX là công cụ xử lý văn bản mạnh và được phát triển bởi Unix từ rất lâu. Với lệnh SED, bạn có thể thực hiện nhiều chức năng như tìm kiếm, thay thế, chèn hoặc xóa ngay trên tập tin của mình. Mặc dù vậy cách sử dụng phổ biến nhất của lệnh SED trong UNIX là để thay thế hoặc tìm và thay thế từ file nguồn.

Cấu trúc lệnh Sed trong Linux / Unix

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS0}}
{{EJS0}}
{{EJS0}}

Ngay sau đây BKHOST sẽ thông qua một vài ví dụ để giúp bạn hiểu rõ hơn về cách thực thi các lệnh Sed trong Linux/ Unix.

Cách sử dụng lệnh SED trong Linux / Unix

1. Thay thế một từ hoặc thay thế chuỗi

Lệnh Sed chủ yếu được sử dụng để thay thế văn bản trong tệp. Lệnh sed đơn giản dưới đây dùng để thay thế từ “unix” bằng “linux” trong tệp.

INPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS1}}
{{EJS1}}
{{EJS1}}

OUTPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS2}}
{{EJS2}}
{{EJS2}}

Ở đây “s” chỉ định hoạt động thay thế từ trong đoạn văn. “/” là các dấu phân cách. “Unix” là mẫu tìm kiếm và “linux” là chuỗi sẽ thay thế.

Theo mặc định, lệnh sed sẽ thực hiện thay thế từ được xuất hiện lần đầu tiên của mẫu trong mỗi dòng và nó sẽ không thay thế lần xuất hiện thứ hai, thứ ba… trong dòng.

2. Thay thế lần xuất hiện thứ n của một mẫu trong một dòng

Sử dụng cú pháp /1, /2, v.v. để thay thế lần xuất hiện đầu tiên, thứ hai của một mẫu trong một dòng. Lệnh dưới đây thay thế lần xuất hiện thứ hai của từ “unix” bằng từ “linux” trong một dòng.

INPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS3}}
{{EJS3}}
{{EJS3}}

OUTPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS4}}
{{EJS4}}
{{EJS4}}

3. Thay thế tất cả các lần xuất hiện của mẫu trong một dòng

Có thể dùng lệnh thay thế / g (thay thế toàn cục) để chỉ định lệnh sed thay thế tất cả các lần xuất hiện của mẫu trong chuỗi hoặc dòng.

INPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS5}}
{{EJS5}}
{{EJS5}}

OUTPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS6}}
{{EJS6}}
{{EJS6}}

4. Thay thế từ lần xuất hiện thứ n thành tất cả các lần xuất hiện trong một dòng

Sử dụng kết hợp / 1, / 2, v.v. +/ g để thay thế tất cả các mẫu từ lần xuất hiện thứ n của một mẫu trong một dòng. Lệnh sed sau đây thay thế từ “unix” thứ ba trở đi bằng từ “linux” trong một dòng.

INPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS7}}
{{EJS7}}
{{EJS7}}

OUTPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS8}}
{{EJS8}}
{{EJS8}}

5. Đặt trong ngoặc đơn ký tự đầu tiên của mỗi từ

Ví dụ: lệnh sed này in ký tự đầu tiên của mỗi từ trong ngoặc đơn.

INPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS9}}
{{EJS9}}
{{EJS9}}

OUTPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS10}}
{{EJS10}}
{{EJS10}}

6. Thay thế chuỗi ký tự trên một số dòng cụ thể

Bạn có thể đặt lệnh sed để thay thế chuỗi ký tự trên một số dòng cụ thể nhằm tránh nhầm lẫn khi sửa.

INPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS11}}
{{EJS11}}
{{EJS11}}

OUTPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS12}}
{{EJS12}}
{{EJS12}}

Lệnh sed ở trên chỉ thay từ “unix” trên chuỗi ký tự ở dòng thứ ba.

7. Nhân đôi từng dòng dữ liệu

Lệnh sed / p cho phép văn bản mới được in dòng ký tự hai lần trên thiết bị đầu cuối. Nếu một dòng không có mẫu tìm kiếm và không được thay thế thì / p chỉ in dòng đó một lần.

INPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS13}}
{{EJS13}}
{{EJS13}}

OUTPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS14}}
{{EJS14}}
{{EJS14}}

8. Chỉ in các dòng được thay thế

Lệnh Sed sẽ in mọi dòng input, bao gồm mọi thay đổi được thực hiện bởi các lệnh. Tuy nhiên, sử dụng câu lệnh -n cùng với tuỳ chỉnh / p để chỉ hiển thị các dòng được thay thế. Ở đây tùy chọn -n loại bỏ các dòng trùng lặp do lệnh lặp / p tạo ra và chỉ in các dòng được thay thế một lần.

INPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS15}}
{{EJS15}}
{{EJS15}}

OUTPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS16}}
{{EJS16}}
{{EJS16}}

Nếu bạn sử dụng -n một mình mà không có / p, thì sed không in bất cứ điều gì.

9. Thay thế chuỗi trên một phạm vi dòng được ấn định

Bạn có thể chỉ định một phạm vi số dòng nhất định cho lệnh sed để thay thế một chuỗi.

INPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS17}}
{{EJS17}}
{{EJS17}}

OUTPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS18}}
{{EJS18}}
{{EJS18}}

Ở đây lệnh sed thay thế các dòng có phạm vi từ 1 đến 3. Một ví dụ khác là:

INPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS19}}
{{EJS19}}
{{EJS19}}

OUTPUT:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS20}}
{{EJS20}}
{{EJS20}}

Ở đây $ chỉ ra dòng cuối cùng trong tệp. Vì vậy, lệnh sed thay thế văn bản từ dòng thứ hai đến dòng cuối cùng trong tệp.

10. Xóa các dòng khỏi một tệp cụ thể

Lệnh SED cũng có thể được sử dụng để xóa các dòng cụ thể khỏi một tệp. Lệnh SED được sử dụng để thực hiện thao tác xóa mà không cần mở tệp. Hãy xem các ví dụ sau đây:

10.1. Xóa một dòng n cụ thể, dòng 5 trong ví dụ này

Cú pháp:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS21}}
{{EJS21}}
{{EJS21}}

Ví dụ:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS22}}
{{EJS22}}
{{EJS22}}

10.2. Xóa dòng cuối cùng

Cú pháp:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS23}}
{{EJS23}}
{{EJS23}}

10.3. Xóa từ dòng thứ x đến dòng thứ y

Cú pháp:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS24}}
{{EJS24}}
{{EJS24}}

Ví dụ:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS25}}
{{EJS25}}
{{EJS25}}

Lệnh sed sẽ thực hiện xóa từ dòng 3 đến dòng thứ 6

10.4. Xóa từ dòng thứ n đến dòng cuối cùng

Cú pháp:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS26}}
{{EJS26}}
{{EJS26}}

Ví dụ:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS27}}
{{EJS27}}
{{EJS27}}

Dòng thứ 12 đến dòng cuối sẽ được xóa trong kết quả hiển thị.

10.5. Xóa dòng khớp mẫu

Cú pháp:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS28}}
{{EJS28}}
{{EJS28}}

Ví dụ:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS29}}
{{EJS29}}
{{EJS29}}

Lệnh trên sẽ xoá tất cả ký tự abc trong văn bản của file txt.

Tổng kết về lệnh Sed trong Linux / Unix

Trên đây là một số cấu trúc lệnh cơ bản của lệnh Sed trong Linux / Unix giúp thay đổi trực tiếp nội dung lên văn bản mà không cần mở ra. Hy vọng bài viết sẽ cung cấp cho bạn thêm cách sử dụng để dễ dàng làm việc với lệnh Sed.

Nếu bạn có bất cứ câu hỏi nào liên quan đến các lệnh Sed, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Mua tên miền .VN tại BKHOST

Giá chỉ từ 750k/năm. Kiểm tra tên miền .VN đẹp và đăng ký ngay hôm nay!

tên miền việt nam

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận
Trượt lên đầu trang
Miễn phí cước gọi
Bạn đã hài lòng với trải nghiệm trên Bkhost.vn?
Cảm ơn lượt bình chọn của bạn, Chúc bạn 1 ngày tốt lành !
Close menu