Lệnh sed trong linux là một công cụ mạnh mẽ để chỉnh sửa văn bản trực tiếp từ dòng lệnh. Nó cho phép bạn tìm kiếm và thay thế các chuỗi ký tự, hoặc thực hiện các thao tác phức tạp hơn. Với lệnh sed, bạn có thể tự động hóa việc chỉnh sửa hàng loạt file một cách dễ dàng và nhanh chóng.
Lệnh sed trong linux là gì?
Lệnh sed trong Linux là một công cụ dòng lệnh mạnh mẽ, cho phép bạn thực hiện các thao tác chỉnh sửa văn bản một cách linh hoạt và hiệu quả. Nó hoạt động bằng cách đọc từng dòng của tệp, áp dụng các lệnh chỉnh sửa được chỉ định, và sau đó xuất kết quả ra màn hình hoặc một tệp mới. Command sed in linux thường được sử dụng để thay thế, xóa, chèn hoặc in các dòng dựa trên các mẫu tìm kiếm cụ thể. Với sed, bạn có thể tự động hóa nhiều tác vụ chỉnh sửa văn bản lặp đi lặp lại, giúp tiết kiệm thời gian và công sức đáng kể. Đây là một công cụ không thể thiếu cho bất kỳ người dùng Linux nào muốn làm việc với văn bản một cách chuyên nghiệp.
Tìm hiểu các kiến thức cơ bản về lệnh sed
Trong bước này, chúng ta sẽ tìm hiểu các kiến thức cơ bản về lệnh sed (stream editor) trong Linux.
Lệnh sed là một công cụ mạnh mẽ để xử lý và chỉnh sửa văn bản, cho phép bạn thực hiện nhiều thao tác trên các tệp văn bản.
Đầu tiên, hãy tạo một tệp văn bản mẫu để làm việc:
echo "This is a sample text file." > sample.txt
Bây giờ, hãy khám phá một số lệnh sed cơ bản:
In toàn bộ tệp
Để in toàn bộ nội dung của tệp, hãy sử dụng lệnh sau:
sed 's/.*/' sample.txt
Ví dụ đầu ra:
This is a sample text file.
In một dòng cụ thể
Để in một dòng cụ thể, hãy sử dụng số dòng với lệnh p:
sed -n '2p' sample.txt
Ví dụ đầu ra:
This is a sample text file.
Thay thế văn bản
Để thay thế văn bản, hãy sử dụng lệnh s theo sau là mẫu và văn bản thay thế:
sed 's/sample/new/' sample.txt
Ví dụ đầu ra:
This is a new text file.
Xóa dòng
Để xóa một dòng cụ thể, hãy sử dụng lệnh d theo sau là số dòng:
sed '2d' sample.txt
Ví dụ đầu ra:
This is a sample text file.
Chèn hoặc thêm văn bản
Để chèn văn bản trước một dòng, hãy sử dụng lệnh i. Để thêm văn bản sau một dòng, hãy sử dụng lệnh a:
sed '2i This is an inserted line.' sample.txt
sed '2a This is an appended line.' sample.txt
Ví dụ đầu ra:
This is a sample text file.
This is an inserted line.
This is a sample text file.
This is an appended line.
Đây chỉ là một vài ví dụ cơ bản về cách sử dụng lệnh sed. Trong bước tiếp theo, chúng ta sẽ khám phá các thao tác sed nâng cao hơn, chẳng hạn như thực hiện thay thế văn bản trong nhiều tệp.
Thực hiện Thay thế Văn bản bằng sed
Trong bước này, chúng ta sẽ khám phá việc thay thế văn bản nâng cao hơn bằng lệnh sed.
Đầu tiên, hãy tạo một tệp mẫu mới với nhiều lần xuất hiện của từ "old":
echo "This is an old text. Replace the old text with new text." > sample.txt
Thay thế tất cả các lần xuất hiện của một từ
Để thay thế tất cả các lần xuất hiện của một từ, hãy sử dụng flag g toàn cục:
sed 's/old/new/g' sample.txt
Ví dụ về đầu ra:
This is an new text. Replace the new text with new text.
Chỉ thay thế lần xuất hiện đầu tiên
Để chỉ thay thế lần xuất hiện đầu tiên, hãy bỏ qua flag g toàn cục:
sed 's/old/new/' sample.txt
Ví dụ về đầu ra:
This is an new text. Replace the old text with new text.
Thay thế trên một dòng cụ thể
Để thay thế văn bản trên một dòng cụ thể, hãy sử dụng số dòng trước lệnh s:
sed '1s/old/new/' sample.txt
Ví dụ về đầu ra:
This is an new text. Replace the old text with new text.
Thay thế bằng cách sử dụng regular expressions
Sed cũng hỗ trợ regular expressions. Để thay thế văn bản bằng regular expression, sử dụng cú pháp \1 để tham chiếu đến các nhóm đã bắt:
sed 's/\(This.*\)old\(.*\)/\1new\2/' sample.txt
Ví dụ về đầu ra:
This is an new text. Replace the new text with new text.
Thay thế trong nhiều tệp
Để thay thế văn bản trong nhiều tệp, hãy truyền tên tệp làm đối số cho lệnh sed:
sed 's/old/new/g' sample.txt another_file.txt
Điều này sẽ thực hiện thay thế văn bản trong cả sample.txt và another_file.txt.
Trong bước tiếp theo, chúng ta sẽ tìm hiểu cách chỉnh sửa nhiều tệp bằng lệnh sed.
Chỉnh sửa nhiều tệp tin với sed
Trong bước này, chúng ta sẽ học cách sử dụng lệnh sed để chỉnh sửa nhiều tệp tin cùng một lúc.
Đầu tiên, hãy tạo hai tệp tin văn bản mẫu để thực hành các thao tác chỉnh sửa:
echo "This is the first file." > file1.txt
echo "This is the second file." > file2.txt
Thay thế văn bản trong nhiều tệp tin
Để thay thế văn bản trong nhiều tệp tin, chỉ cần truyền tên các tệp tin làm đối số cho lệnh sed.
sed 's/first/updated/g' file1.txt file2.txt
Ví dụ về kết quả đầu ra:
This is the updated file.
This is the second file.
Chỉnh sửa trực tiếp trên tệp tin
Theo mặc định, sed in kết quả đã sửa đổi ra console. Để chỉnh sửa trực tiếp trên tệp tin, sử dụng tùy chọn -i.
sed -i 's/second/new/g' file1.txt file2.txt
Bây giờ, các tệp tin file1.txt và file2.txt đã được sửa đổi trực tiếp trên hệ thống.
Sử dụng tệp tin sao lưu
Nếu bạn muốn giữ bản sao lưu của các tệp tin gốc, hãy sử dụng tùy chọn -i với phần mở rộng sao lưu.
sed -i.bak 's/new/updated/g' file1.txt file2.txt
Thao tác này sẽ tạo các tệp tin sao lưu file1.txt.bak và file2.txt.bak chứa nội dung gốc.
Chỉnh sửa tệp tin một cách đệ quy
Để chỉnh sửa tệp tin một cách đệ quy trong một thư mục, bạn có thể sử dụng lệnh find cùng với sed.
find . -type f -name "*.txt" -exec sed -i 's/updated/final/g' {} \;
Lệnh này sẽ thay thế tất cả các lần xuất hiện của "updated" bằng "final" trong tất cả các tệp tin .txt.
Việc thay thế được thực hiện trong thư mục hiện tại và các thư mục con của nó.
Với các kỹ thuật này, bạn có thể chỉnh sửa nhiều tệp tin một cách hiệu quả bằng lệnh sed.
Điều này đặc biệt hữu ích khi bạn cần thực hiện thay thế hoặc sửa đổi văn bản trên quy mô lớn.
Kết luận cho linux sed command
Vậy là chúng ta đã cùng nhau khám phá những điều thú vị về lệnh linux sed command trong Linux rồi! Hy vọng qua bài viết này, bạn đã có cái nhìn tổng quan và hiểu rõ hơn về sức mạnh của nó. Sed không chỉ đơn thuần là một công cụ chỉnh sửa văn bản, mà còn là một trợ thủ đắc lực giúp bạn tự động hóa nhiều tác vụ phức tạp. Hãy thử nghiệm và áp dụng những kiến thức này vào công việc hàng ngày để tiết kiệm thời gian và nâng cao hiệu quả. Đừng ngại khám phá thêm các tùy chọn nâng cao của sed để làm chủ công cụ này một cách hoàn toàn. Chúc bạn thành công trên con đường chinh phục Linux và làm chủ những dòng lệnh!