Lệnh SED trong Linux/Unix: Cấu trúc và cách sử dụng chi tiết

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

Tiếp theo chúng ta hãy cùng xem cách sử dụng lệnh Sed như thế nào nhé.

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:

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

OUTPUT:

unix is great os. linux is opensource. unix is free os.
learn operating system.
unix linux which one you choose.
unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful.

Ở đâ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.

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:

$ sed 's / unix / linux / 2' geekfile.txt

OUTPUT:

unix is great os. linux is opensource. unix is free os.
learn operating system.
unix linux which one you choose.
unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful.

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:

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

 

OUTPUT:

linux is great os. linux is opensource. linux is free os.
learn operating system.
linux linux which one you choose.
linux is easy to learn.linux is a multiuser os.Learn linux .linux is a powerful.

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:

$ sed 's / unix / linux / 3g' geekfile.txt

OUTPUT:

unix is great os. unix is opensource. linux is free os.
learn operating system.
unix linux which one you choose.
unix is easy to learn.unix is a multiuser os.Learn linux .linux is a powerful.

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

$ echo "Welcome To The Geek Stuff" | sed 's/\(\b[A-Z]\)/\(\1\)/g'

OUTPUT:

(W) elcome (T) o (T) he (G) eek (S) tuff

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:

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

OUTPUT:

unix is great os. unix is opensource. unix is free os.
learn operating system.
linux linux which one you choose.
unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.

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

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:

$ sed 's / unix / linux / p' geekfile.txt

OUTPUT:

linux is great os. unix is opensource. unix is free os.
linux is great os. unix is opensource. unix is free os.
learn operating system.
linux linux which one you choose.
linux linux which one you choose.
linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.

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:

$ sed -n 's / unix / linux / p' geekfile.txt

 

OUTPUT:

linux is great os. unix is opensource. unix is free os.
linux linux which one you choose.
linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.

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

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:

$ sed '1,3 s / unix / linux /' geekfile.txt

OUTPUT:

linux is great os. unix is opensource. unix is free os.
learn operating system.
linux linux which one you choose.
unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.

Ở đâ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:

$ sed '2, $ s / unix / linux /' geekfile.txt

OUTPUT:

unix is great os. unix is opensource. unix is free os.
learn operating system.
linux linux which one you choose.
linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful

Ở đâ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.

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:

$ sed 'nd' filename.txt

Ví dụ:

$ sed '5d' filename.txt

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

Cú pháp:

$ sed '$ d' filename.txt

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

Cú pháp:

$ sed 'x, yd' filename.txt

Ví dụ:

$ sed '3,6d' filename.txt

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:

$ sed 'nth, $ d' filename.txt

Ví dụ:

$ sed '12, $ d 'filename.txt

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:

$ sed '/ pattern / d' filename.txt

Ví dụ:

$ sed '/ abc / d' filename.txt

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

Trên đây là tất cả những gì bạn cần biết về khái niệm, cấu trúc và cách sử dụng của lệnh SED trong Linux/Unix. Mong rằng thông tin trên đây đã giúp bạn hiểu hơn về Sed command. Nếu có thêm bất kỳ thắc mắc nào, hãy comment xuống bên dưới bài viết nhé.

Nguồn bài: Bkhost

Mọi người cùng tìm kiếm: sed, sed là gì, sed -i, sed linux, sed in linux, lệnh sed trong linux, sed -i linux, linux sed, sed -i command, sed -r