Cách thay thế nhiều dòng bằng lệnh `sed`

How Replace Multiple Lines Using Sed Command



Đôi khi nó yêu cầu thay thế nhiều dòng của một tệp bằng bất kỳ ký tự hoặc văn bản cụ thể nào. Các lệnh khác nhau tồn tại trong Linux để thay thế nhiều dòng của một tệp. Lệnh `sed` là một trong số chúng để thực hiện loại tác vụ này. Dạng đầy đủ của `sed` là Steam Editor và nó chủ yếu được sử dụng để đọc và chuyển đổi văn bản theo những cách khác nhau bằng cách sử dụng một biểu thức chính quy. Cách sử dụng lệnh này để thay thế nhiều dòng của tệp theo những cách khác nhau được giải thích trong hướng dẫn này.

Tờ Cheat `sed` thường được sử dụng:

Các ký tự được sử dụng phổ biến nhất được sử dụng trong lệnh `sed` được giải thích trong bảng sau.







Tính cách Mục đích
đến Nó được sử dụng để bổ sung nội dung.
NS Nó được sử dụng cho nội dung phân nhánh.
NS Nó được sử dụng để thay đổi nội dung.
NS Nó được sử dụng để xóa một dòng của tệp.
NS Nó được sử dụng để xóa dòng đầu tiên của tệp.
NS Nó được sử dụng để sao chép từ văn bản đang giữ.
NS Nó được sử dụng để nối từ văn bản đang giữ.
NS Nó được sử dụng để sao chép trong văn bản đang giữ.
NS Nó được sử dụng để nối vào văn bản đang giữ.
tôi Nó được sử dụng để chèn.
tôi Nó được sử dụng để in dòng thay thế.
n Nó được sử dụng để đi đến dòng tiếp theo.
n Nó được sử dụng để nối dòng đầu vào tiếp theo.
P Nó được sử dụng để in.
P Nó được sử dụng để in dòng đầu tiên.
Cái gì Nó được sử dụng để bỏ thuốc lá.
NS Nó được sử dụng để bỏ ngay lập tức.
NS Nó được sử dụng để đọc tệp.
NS Nó được sử dụng để đọc dòng từ tệp.
NS Nó được dùng để thay thế.
NS Nó được sử dụng để kiểm tra sự thay thế.
NS Nó được sử dụng để kiểm tra không thay thế.
trong Nó được sử dụng để ghi vào tệp.
TRONG Nó được sử dụng để ghi một dòng vào tệp.
NS Nó được sử dụng để hoán đổi các mẫu và giữ.
Nó được sử dụng để dịch.
Với Nó được sử dụng để xóa dòng.
‘=’ Nó được sử dụng để in số dòng.

Thay thế nhiều dòng bằng cách sử dụng lệnh `sed` từ terminal:

Cách lệnh `sed` có thể được sử dụng để thay thế nhiều dòng từ một tệp từ thiết bị đầu cuối được trình bày trong phần này của hướng dẫn này. Tạo một tệp có tên sed.txt với nội dung sau kiểm tra các lệnh của phần này.



sed.txt



Dạng đầy đủ của sed là trình chỉnh sửa luồng.





Nó là một tiện ích Unix được sử dụng để đọc và chuyển đổi văn bản ở một định dạng khác.

Nó được phát triển bởi Lee E. McMahon.



Nó được sử dụng để xử lý văn bản.

Nó hỗ trợ các biểu thức chính quy.

Ví dụ-1: Thay thế hai dòng liên tiếp

Lệnh `sed` sau sẽ thay thế hai dòng liên tiếp bằng một dòng khác. Ở đây, tùy chọn -z được sử dụng để thay thế các dòng liên tiếp bằng dữ liệu rỗng trước khi thêm văn bản thay thế. Theo lệnh, 3rdvà 4NScác dòng của tệp sẽ được thay thế bằng văn bản, 'Nó là một công cụ rất hữu ích' .

$con mèosed.txt
$quyến rũ -Với 's / Nó được phát triển bởi Lee E. McMahon. n Nó được sử dụng cho văn bản
Xử lý. / Nó là một công cụ rất hữu ích. ''
sed.txt

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh.

Ví dụ-2: Thay thế nhiều dòng dựa trên phù hợp và cờ toàn cầu

Lệnh `sed` sau sẽ thay thế tất cả các dòng bắt đầu bằng từ, 'Nó' bằng từ, ' Dòng này được thay thế ‘.

$con mèosed.txt
$quyến rũ 's / ^ Nó. * / Dòng này được thay thế / g'sed.txt

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh. Ba dòng chứa từ ‘ ' Trong tập tin. Vì vậy, những dòng này đã được thay thế bằng văn bản thay thế.

Ví dụ-3: Thay thế nhiều dòng dựa trên trận đấu và lệnh dòng tiếp theo

Lệnh `sed` sau sẽ thay thế từ ' ‘Bằng từ này,‘ ‘Với lệnh dòng tiếp theo,‘ n ’.

$con mèosed.txt
$quyến rũ '{n; / is / {s / is / was /}}'sed.txt

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh. Ở đây, 'Là' tồn tại trong 2NSvà 4NScác dòng của tệp và những dòng này được sửa đổi bởi từ 'là' .

Thay thế nhiều dòng bằng cách tạo tệp kịch bản `sed`:

Trong các ví dụ trước, các lệnh `sed` đã được thực thi từ thiết bị đầu cuối. Nhưng nó là một ngôn ngữ kịch bản, và nếu tập lệnh chứa nhiều câu lệnh, thì tốt hơn là tạo một tệp sed với tập lệnh. Tạo một tệp văn bản có tên student.txt với nội dung sau, trong đó tập lệnh `sed` sẽ được áp dụng.

student.txt

ID: 111045
Tên: Robert
Bộ phận: CSE
Lô: 35

ID: 111876
Tên: Joseph
Bộ phận: BBA
Lô: 27

ID: 111346
Tên: William
Bộ phận: CSE
Lô: 45

ID: 111654
Tên: Charles
Bộ phận: EEE
Lô: 41

ID: 111346
Tên: John
Bộ phận: CSE
Lô: 25

ID: 111746
Tên: Thomas
Bộ phận: CSE
Lô: 15

Ví dụ-4: Thay thế nhiều dòng của một tệp bằng tệp tập lệnh `sed`

Tạo một tệp sed có tên là Replace.sed với nội dung sau để thay thế nhiều dòng dựa trên mẫu tìm kiếm. Đây, từ ‘ CSE ‘Sẽ được tìm kiếm trong tệp văn bản, và nếu kết quả phù hợp tồn tại, thì nó sẽ tìm kiếm lại số 35 và 15. Nếu kết quả trùng khớp thứ hai tồn tại trong tệp, thì nó sẽ được thay thế bằng số 45.

Replace.sed

/CSE/ {
p; n;
/35/ {
NS/35/Bốn năm/;
p; d;
}
/mười lăm/ {
NS/mười lăm/55/;
p; d;
}
}
P;

Chạy lệnh sau để kiểm tra nội dung hiện có của tệp. ‘CSE’ xuất hiện bốn lần trong tệp văn bản. 35 và 15 tồn tại ở hai nơi.

$con mèostudent.txt

Lệnh sau sẽ thay thế nội dung của nhiều dòng dựa trên tập lệnh sed.

$quyến rũ -n -NSthay thế.sed sinh viên.txt

Kết quả sau sẽ xuất hiện sau khi chạy lệnh.

Phần kết luận

Các cách khác nhau để thay thế nhiều dòng hoặc nội dung của nhiều dòng bằng lệnh `sed` đã được trình bày trong hướng dẫn này. Cách tập lệnh `sed` có thể được thực thi từ tệp sed cũng được hiển thị trong hướng dẫn này. Tôi hy vọng hướng dẫn này sẽ giúp người đọc thay thế nhiều dòng của bất kỳ tệp nào bằng cách sử dụng lệnh `sed`.