Lệnh sed để thay thế chuỗi trong tệp

Sed Command Replace String File



Bất cứ khi nào chúng ta làm việc với bất kỳ loại tệp nào, việc sửa đổi các tệp đó bằng cách tìm và thay thế các từ là một thói quen rất phổ biến. Hầu hết các trình soạn thảo văn bản đều cung cấp các phương pháp dựa trên GUI khác nhau để thực hiện các sửa đổi này. Tuy nhiên, đôi khi, bạn cần một cách để tìm và thay thế các từ trong tệp thông qua thiết bị đầu cuối. Do đó, trong bài viết này, chúng tôi sẽ hướng dẫn bạn phương pháp sử dụng lệnh sed để thay thế một chuỗi trong tệp văn bản. Chúng tôi cũng sẽ làm sáng tỏ các tình huống khác nhau mà lệnh này có thể được sử dụng.

Lưu ý: Chúng tôi sẽ sử dụng Linux Mint 20 để trình diễn cách sử dụng lệnh sed để thay thế một chuỗi trong tệp. Bạn cũng có thể sử dụng bất kỳ phiên bản Linux nào khác nếu muốn.







Cách sử dụng lệnh sed:

Bây giờ chúng tôi sẽ chỉ cho bạn một số ví dụ rất thú vị để mô tả cách sử dụng lệnh sed trong Linux. Hãy để chúng tôi xem, lệnh này hoạt động như thế nào trong các tình huống khác nhau.



Tạo tệp văn bản để trình diễn:

Để trình bày cách sử dụng lệnh sed, chúng tôi muốn làm việc với một tệp văn bản. Tuy nhiên, bạn thậm chí có thể tạo tệp Bash hoặc bất kỳ tệp nào khác mà bạn chọn. Thứ hai, chúng tôi sẽ tạo tệp trong Thư mục chính để không phải chỉ định bất kỳ đường dẫn phức tạp nào khi truy cập tệp này. Để tạo tệp văn bản, cần thực hiện các bước sau:



Nhấp vào biểu tượng Trình quản lý tệp nằm trên thanh tác vụ Linux Mint 20 của bạn:





Bây giờ, hãy tạo một tệp văn bản mới trong Thư mục chính bằng cách nhấp chuột phải vào bất kỳ đâu ở đó và sau đó chọn tùy chọn Tài liệu mới từ trình đơn xếp tầng và tùy chọn Tài liệu trống từ trình đơn xếp tầng phụ. Khi tệp văn bản đã được tạo, hãy đặt tên phù hợp cho nó. Đối với ví dụ cụ thể này, tôi đã đặt tên nó là sed.txt.



Nhấp đúp vào tệp này để mở tệp và nhập bất kỳ văn bản ngẫu nhiên nào vào tệp như thể hiện trong hình dưới đây. Lưu tệp văn bản này bằng cách nhấn Ctrl + S và sau đó đóng nó.

Bây giờ khởi chạy thiết bị đầu cuối trong Linux Mint 20 như thể hiện trong hình ảnh sau:

Sau khi khởi chạy thiết bị đầu cuối trong Linux Mint 20, bạn có thể lần lượt xem qua tất cả các ví dụ được đề cập bên dưới.

Sử dụng lệnh sed để thay thế tất cả các lần xuất hiện của một từ cho sẵn:

Bạn có thể sử dụng lệnh sed để thay thế tất cả các lần xuất hiện của một từ nhất định trong tệp văn bản. Cú pháp để đạt được mục tiêu này được đề cập dưới đây:

$quyến rũ'NS/quyến rũ/FindWord/ReplaceWord/'File.txt

Ở đây, bạn cần thay thế FindWord bằng từ mà bạn muốn thay thế và ReplaceWord bằng từ cần thay thế. Hơn nữa, bạn cũng cần thay thế tệp bằng tên của tệp mà bạn muốn thực hiện các thay thế này. Trong trường hợp này, tôi đã thay thế FindWord bằng sed và ReplaceWord bằng thay thế. Tên tệp của chúng tôi là sed.txt. Nó cũng được hiển thị trong hình ảnh sau:

Việc thực hiện thành công lệnh này sẽ hiển thị cho bạn những thay đổi đã xảy ra do chạy lệnh này trên thiết bị đầu cuối của bạn:

Sử dụng lệnh sed để thay thế lần xuất hiện thứ n của một từ cho sẵn trong mỗi dòng:

Kịch bản trên là kịch bản thay thế đơn giản nhất, tuy nhiên, đôi khi, bạn không muốn thay thế tất cả các lần xuất hiện của một từ mà bạn chỉ muốn thay thế lần xuất hiện đầu tiên, thứ hai hoặc thứ n của từ đó trong tất cả các dòng. Để thực hiện việc này, bạn có thể thực hiện lệnh sau:

$quyến rũ'NS/FindWord/ReplaceWord/num ’file.txt

Ở đây, bạn cần thay thế FindWord bằng từ mà bạn muốn thay thế và ReplaceWord bằng từ cần thay thế. Hơn nữa, bạn cũng cần thay thế tệp bằng tên của tệp mà bạn muốn thực hiện các thay thế này. Trong trường hợp này, tôi đã thay thế FindWord và ReplaceWord bằng sed. Tên tệp của chúng tôi là sed.txt. Ngoài ra, num đề cập đến sự xuất hiện hoặc vị trí của từ được thay thế. Trong ví dụ minh họa, tôi muốn thay thế lần xuất hiện đầu tiên của thay thế bằng sed trong mỗi dòng như thể hiện trong hình ảnh bên dưới:

Việc thực hiện thành công lệnh này sẽ hiển thị cho bạn những thay đổi đã xảy ra do chạy lệnh này trên thiết bị đầu cuối của bạn:

Sử dụng lệnh sed để thay thế một từ cho sẵn trong một dòng cụ thể:

Đôi khi, bạn chỉ muốn thay thế một từ nhất định trong một dòng cụ thể chứ không phải trong toàn bộ tài liệu. Để làm điều đó, bạn cần chỉ định rõ ràng số dòng cụ thể đó trong lệnh sau:

$quyến rũ‘LineNum s/FindWord/ReplaceWord/'File.txt

Ở đây, bạn cần thay thế FindWord bằng từ mà bạn muốn thay thế và ReplaceWord bằng từ cần thay thế. Hơn nữa, bạn cũng cần thay thế tệp bằng tên của tệp mà bạn muốn thực hiện các thay thế này. Trong trường hợp này, tôi đã thay thế FindWord sed và ReplaceWord bằng thay thế. Tên tệp của chúng tôi là sed.txt. Ngoài ra, bạn cần thay thế LineNum bằng số dòng của dòng cụ thể mà bạn muốn thực hiện thay thế. Trong ví dụ này, chúng tôi muốn thay thế sed bằng thay thế ở dòng số 2 của tệp của chúng tôi như được hiển thị trong hình ảnh sau:

Việc thực hiện thành công lệnh này sẽ hiển thị cho bạn những thay đổi đã xảy ra do chạy lệnh này trên thiết bị đầu cuối của bạn. Bạn có thể dễ dàng xác minh rằng những thay đổi nói trên chỉ xảy ra ở dòng số 2 trong tệp của chúng tôi chứ không phải trong toàn bộ văn bản.

Phần kết luận:

Bất cứ khi nào bạn cảm thấy cần thay thế bất kỳ từ nào trong một tệp, điều đầu tiên bạn cần làm là xác định yêu cầu cụ thể của bạn, tức là bạn muốn thay thế từ cụ thể đó trong toàn bộ tệp hay bạn muốn thay thế một sự kiện cụ thể của từ cụ thể đó hoặc bạn muốn thay thế từ đó trong một dòng cụ thể. Khi bạn đã xác định được kịch bản cụ thể của mình, thì bạn có thể sử dụng phương pháp cụ thể đó từ các ví dụ được thảo luận trong bài viết này.