Làm thế nào để Chèn một Dòng sau Khớp bằng cách sử dụng `sed`?

How Insert Line After Match Using Sed



Một trong những lệnh hữu ích và mạnh mẽ của Linux là lệnh sed. Lệnh này được sử dụng để thực hiện các loại tác vụ khác nhau trong Linux, chẳng hạn như chèn, cập nhật và xóa một văn bản hoặc dòng cụ thể dựa trên khớp. Bạn có thể chèn một văn bản trong một chuỗi hoặc một tệp theo nhiều cách khác nhau bằng cách sử dụng lệnh sed.

Cách chèn một dòng sau khi tìm thấy kết quả khớp trong một chuỗi hoặc một dòng được hiển thị trong hướng dẫn này.







Chèn một dòng trong chuỗi

Một dòng mới có thể được chèn vào sau bất kỳ giá trị chuỗi nào bằng cách sử dụng lệnh sed nếu mẫu được xác định trong lệnh khớp với bất kỳ phần nào của giá trị chuỗi.



Ví dụ sau đây cho thấy cách một dòng mới có thể được thêm vào sau giá trị chuỗi nếu một chuỗi cụ thể tồn tại ở bất kỳ vị trí nào trong giá trị chuỗi.



Ví dụ-1: Chèn một dòng trong một chuỗi sau khi tìm thấy một kết quả phù hợp

Lệnh sau sẽ tìm kiếm inng trong chuỗi, Tôi thích lập trình, và một dòng văn bản, Bạn có thích lập trình không? sẽ được chèn sau chuỗi nếu chuỗi tìm kiếm tồn tại.





Ở đây, ký tự & được dùng để chèn dòng sau chuỗi.

$quăng đi 'Tôi thích lập trình.' | quyến rũ 's / inng / & Bạn có thích lập trình không? /'

Kết quả sau cho thấy rằng inng không tồn tại trong chuỗi và không có dòng nào được chèn sau chuỗi.




Lệnh sau sẽ tìm kiếm ing. trong chuỗi, tôi thích lập trình và nó tồn tại trong chuỗi.

$quăng đi 'Tôi thích lập trình.' | quyến rũ 's / ing ./& Bạn có thích lập trình không? /'

Kết quả sau cho thấy dòng mới được thêm vào sau chuỗi.

Chèn một dòng trong tệp

Có hai cách để chèn một dòng sau khi tìm thấy kết quả khớp trong tệp được đề cập bên dưới. Khi lệnh sed được sử dụng mà không có tùy chọn -i, thì nội dung của tệp sẽ không thay đổi và đầu ra sẽ hiển thị nội dung tệp với dòng mới được chèn. Bạn phải sử dụng tùy chọn -i với lệnh sed để chèn dòng mới vĩnh viễn vào tệp nếu mẫu phù hợp tồn tại trong tệp.

A. Sử dụng a trong lệnh sed

Dấu a có thể được sử dụng trong mẫu tìm kiếm của sed để nối một hoặc nhiều dòng trong tệp sau dòng mà mẫu tìm kiếm khớp hoặc sau một số dòng cụ thể.

B. Sử dụng i trong lệnh sed

Chữ i có thể được sử dụng trong mẫu tìm kiếm của lệnh sed để chèn một hoặc nhiều dòng trong tệp trước dòng mà mẫu tìm kiếm khớp.

Chèn (các) dòng trong tệp dựa trên mẫu:

Tạo tệp văn bản được phân cách bằng tab có tên products.txt với nội dung sau đây để chỉ ra các công dụng của cờ trên trong lệnh sed.

products.txt

Tên ID

01 kem đánh

02 Bột ca cao

03 Đường

04 quả trứng

05 Bột

Ví dụ-2: Chèn một dòng sau một số dòng cụ thể bằng cách sử dụng

Các lệnh sau cho biết cách có thể thêm một dòng mới, sau một số dòng cụ thể của tệp products.txt, dựa trên mẫu được sử dụng trong lệnh sed.

Tại đây, lệnh đầu tiên sẽ hiển thị nội dung hiện có của tệp. Lệnh sed sẽ nối văn bản, b01 Bột nở vào sau hai dòng đầu tiên của tệp. Lệnh cuối cùng được sử dụng để kiểm tra xem nội dung tệp có bị thay đổi hay không.

$con mèoproducts.txt

$quyến rũ '2 a b01 tBaking powder'products.txt

$con mèoproducts.txt

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

Ví dụ-3: Chèn một dòng sau dòng cuối cùng bằng cách sử dụng dấu

Lệnh sau đây chỉ ra cách nối một dòng mới sau dòng cuối cùng của tệp. Lệnh đầu tiên và cuối cùng hiển thị nội dung hiện có của tệp trước và sau khi thực hiện lệnh sed. Biểu tượng $ được sử dụng trong mẫu của lệnh sed để đề cập đến dòng cuối cùng của tệp.

$con mèoproducts.txt

$quyến rũ '$ a b01 t Bột làm bánh'products.txt

$con mèoproducts.txt

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

Ví dụ-4: Chèn một dòng vào bất kỳ đâu trong tệp sau khi khớp với một mẫu bằng cách sử dụng

Lệnh sed sau đây cho thấy cách một dòng mới có thể được thêm vào bất kỳ đâu trong tệp dựa trên mẫu phù hợp. Mẫu được sử dụng trong lệnh sed sẽ tìm kiếm bất kỳ dòng nào bắt đầu bằng s01 và thêm chuỗi mới sau nó. Dòng thứ tư của tệp bắt đầu bằng s01 và dòng mới sẽ được chèn sau dòng đó.

$con mèoproducts.txt

$quyến rũ '/^s01.*/a b01 tBaking Powder'products.txt

$con mèoproducts.txt

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


Lệnh sed sau sẽ tìm kiếm bất kỳ dòng nào kết thúc bằng Powder và chèn dòng mới sau nó. Dòng thứ ba của tệp kết thúc bằng Powder. Vì vậy, dòng mới sẽ được chèn vào sau dòng đó.

$con mèoproducts.txt

$quyến rũ '/ Bột $ / a b01 tBaking Powder'products.txt

$con mèoproducts.txt

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

Ví dụ-5: Chèn nhiều dòng sau mẫu phù hợp bằng cách sử dụng

Lệnh sed sau đây chỉ ra cách thêm nhiều dòng bên trong nội dung của tệp dựa trên mẫu phù hợp.

Ở đây, hai dòng sẽ được thêm vào sau dòng thứ ba, theo mẫu.

$con mèoproducts.txt

$quyến rũ '/ ^ [a-c] / a b01 tBaking Powder nb02 tBaking Soda'products.txt

$con mèoproducts.txt

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

Ví dụ-6: Chèn một dòng sau khi khớp với một mẫu bằng cách sử dụng I

$con mèoproducts.txt

$quyến rũ '/ cream / i b01 tBaking Powder'products.txt

$con mèoproducts.txt

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

Ví dụ-7: Chèn một dòng vĩnh viễn sau mẫu phù hợp bằng cách sử dụng tùy chọn -i

Lệnh sed sau đây chỉ ra cách thay đổi nội dung của tệp vĩnh viễn. Tùy chọn i được sử dụng với lệnh sed để chèn một dòng mới trong tệp dựa trên mẫu.

$con mèoproducts.txt

$quyến rũ -tôi '/ e $ / a g01 tGhee'products.txt

$con mèoproducts.txt

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

Phần kết luận:

Cách chèn hai hoặc nhiều dòng trong tệp bằng cách sử dụng lệnh sed với mẫu đã được trình bày trong hướng dẫn này để giúp người đọc áp dụng lệnh này để chèn các dòng trong tạm thời hoặc vĩnh viễn dựa trên mẫu.