Liên hệProfile
Danh mục

Mục Lục

    Cách sử dụng lệnh sed Linux để biên tập dòng lệnh nhanh chóng

    Nguyễn Hưng

    Ngày đăng:

    13/03/2026

    Cập nhật lần cuối:

    13/03/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    13/03/2026

    Cập nhật lần cuối:

    13/03/2026

    Mục lục

    sed Linux là một trình biên tập dòng dùng để xử lý và chỉnh sửa văn bản theo cách tự động, không tương tác trực tiếp như khi mở file bằng vim/nano. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu các tính năng quan trọng và hướng dẫn bạn sử dụng lệnh sed trong Linux để biên tập dòng lệnh hiệu quả.

    Những điểm chính

    • Định nghĩa lệnh sed Linux: Hiểu rõ khái niệm và cơ chế hoạt động của sed như một trình biên tập dòng, chuyên dùng để xử lý văn bản tự động.
    • Các tính năng quan trọng: Nắm được các chức năng cốt lõi như tìm kiếm, thay thế, chỉnh sửa cấu trúc và xử lý hàng loạt của sed.
    • Cú pháp và tùy chọn: Thành thạo cú pháp lệnh cơ bản và bảng các tùy chọn quan trọng (-i, -e, -n, -r) để điều khiển hành vi của sed.
    • Các trường hợp sử dụng thực tế: Học cách áp dụng sed vào các tình huống thực tế, từ thay thế từ, sửa file trực tiếp đến lọc dòng và sử dụng regex nâng cao.
    • Cách sử dụng tối ưu: Biết cách backup tự động khi sửa file, tái sử dụng quy tắc và kết hợp với các lệnh khác qua pipeline.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề nâng cao như sự khác biệt với vi/nano, xử lý ký tự đặc biệt trong URL và cách dùng sed -i an toàn.

    Lệnh sed Linux là gì?

    Sed (Stream Editor) là lệnh được sử dụng để xử lý và điều chỉnh văn bản. Khác với các trình soạn thảo thông thường như vi hay nano thường yêu cầu người dùng phải mở file và thao tác thủ công, sed cho phép bạn thực hiện các tác vụ phân tích cú pháp và chỉnh sửa dữ liệu ngay trên dòng lệnh hoặc thông qua luồng dữ liệu đầu vào. Công cụ này thường được ứng dụng khi quản trị viên hệ thống cần thao tác nhanh trên các file cấu hình, mã nguồn script hoặc các file văn bản thuần túy mà không cần tương tác trực quan.

    Sed (Stream Editor) là lệnh được sử dụng để xử lý và điều chỉnh văn bản
    Sed (Stream Editor) là lệnh được sử dụng để xử lý và điều chỉnh văn bản

    Các tính năng quan trọng của lệnh sed trong Linux 

    Công dụng của lệnh sed nằm ở khả năng tự động hóa các thao tác văn bản phức tạp:

    • Tìm kiếm và thay thế: Sed quét qua luồng văn bản, xác định các mẫu khớp với điều kiện và thay thế chúng bằng nội dung mới một cách chính xác.
    • Chỉnh sửa cấu trúc: Công cụ này hỗ trợ linh hoạt các thao tác xóa dòng, chèn thêm dòng mới hoặc lọc lấy các đoạn văn bản cụ thể.
    • Xử lý hàng loạt: Sed hỗ trợ tốt khi bạn cần áp dụng cùng một quy tắc chỉnh sửa cho hàng trăm file cùng lúc hoặc tích hợp vào các Shell Script để tự động hóa quy trình quản trị.
    Các tính năng quan trọng của lệnh sed trong Linux 
    Các tính năng quan trọng của lệnh sed trong Linux 

    Cú pháp lệnh và các tùy chọn của lệnh sed

    Dưới đây là cú pháp của lệnh sed:

    sed [OPTION]... 'SCRIPT' [INPUTFILE]...
    • OPTIONS: Là các tùy chọn dùng để điều chỉnh cách lệnh sed hoạt động.
    • [SCRIPT]: Là phần mô tả các thao tác xử lý văn bản, tức là tập lệnh hoặc chuỗi lệnh sed sẽ được áp dụng lên dữ liệu đầu vào.
    • [INPUTFILE…]: Là một hoặc nhiều file chứa dữ liệu cần xử lý, nếu không chỉ định phần này, sed sẽ đọc dữ liệu từ standard input.

    Dưới đây là các tùy chọn của lệnh sed trong Linux:

    Tùy chọnMô tảVí dụ
    -iChỉnh sửa trực tiếp trên file.sed -i 's/ERROR/WARNING/' log.txt
    -eThực thi nhiều lệnh script cùng lúc.sed -e 's/ERROR/WARNING/' -e 's/FAIL/OK/' log.txt
    -nTắt chế độ tự động hiển thị, thường dùng kèm lệnh p để lọc dòng.sed -n '/ERROR/p' log.txt
    -rSử dụng Extended Regex.sed -r 's/[0-9]{4}/YEAR/' log.txt
    -fĐọc các quy tắc xử lý từ một file script bên ngoài.sed -f scriptfile

    1. Thay thế 1 từ

    Để thay thế chuỗi trong file log, bạn thực thi lệnh như sau:

    sed 's/ERROR/WARNING/' web.log

    Lệnh trên đọc nội dung của file web.log, trên mỗi dòng sẽ thay lần xuất hiện đầu tiên của chuỗi ERROR bằng WARNING, sau đó in kết quả ra màn hình và không chỉnh sửa trực tiếp file gốc.

    Thay thế chuỗi trong file log
    Thay thế chuỗi trong file log

    2. Thay thế tất cả từ trong dòng

    Để thay thế tất cả các từ khớp trong dòng, bạn cần thêm cờ g (global) ở cuối biểu thức với cú pháp lệnh như sau:

    sed 's/ERROR/WARNING/g' web.log
    Thay thế tất cả từ trong dòng
    Thay thế tất cả từ trong dòng

    3. Thay đổi trực tiếp file

    Bạn sử dụng cờ -i để ghi đè thay đổi vào file thay vì in ra màn hình.:

    sed -i 's/ERROR/WARNING/g' web.log

    iconLưu ý

    Thao tác này không thể hoàn tác trừ khi có backup.

    Ghi đè thay đổi vào file
    Ghi đè thay đổi vào file

    4. Lọc dòng chứa pattern

    Bạn kết hợp với tùy chọn -n và lệnh p để chỉ hiển thị các dòng chứa pattern mong muốn.

    sed -n '/ERROR/p' web.log
    Lọc dòng chứa pattern
    Lọc dòng chứa pattern

    Chỉ in các dòng chứa ERROR

    5. Kết hợp lệnh sed với pipe

    Bạn có thể kết hợp sed với các lệnh khác như grep hay cat để lọc và chỉnh sửa nội dung log, cú pháp thực thi như sau:

    cat web.log | grep "ERROR" | sed 's/ERROR/WARNING/'

    Kết quả cuối cùng là danh sách các dòng log chứa ERROR, nhưng chuỗi ERROR đã được thay bằng WARNING trong output, trong khi file web.log vẫn giữ nguyên.

    Kết hợp lệnh sed với pipe
    Kết hợp lệnh sed với pipe

    Lọc dòng chứa ERROR thay bằng WARNING

    6. Dùng regex nâng cao

    Bạn có thể sử dụng -r để kích hoạt Regex mở rộng, cho phép dùng nhóm ký tự () và tham chiếu ngược \1, \2, \3 để sắp xếp lại cấu trúc dữ liệu. Ví dụ, để chuyển đổi định dạng ngày tháng từ YYYY-MM-DD sang DD-MM-YYYY, bạn thực thi lệnh sau đây:

    sed -r 's/([0-9]{4})-([0-9]{2})-([0-9]{2})/\3-\2-\1/g' web.log
    Bạn có thể sử dụng -r để kích hoạt Regex mở rộng
    Bạn có thể sử dụng -r để kích hoạt Regex mở rộng

    Kết quả chuyển đổi YYYY-MM-DD thành DD-MM-YYYY

    1. Backup tự động khi sửa file

    Việc sử dụng cờ -i có thể tăng rủi ro làm hỏng file cấu hình, do đó bạn hãy thêm phần mở rộng backup ngay sau cờ -i. Lệnh dưới đây sẽ tự động tạo ra file .bak trước khi chỉnh sửa:

    sed -i.bak 's/ERROR/WARNING/g' web.logcat
    Backup tự động khi sửa file
    Backup tự động khi sửa file

    Tạo file web.log.bak phòng lỗi

    2. Tái sử dụng quy tắc

    Thay vì phải gõ lại các biểu thức phức tạp, bạn hãy lưu vào file và áp dụng cho hàng loạt file khác nhau. Để thực thi, bạn hãy gõ cú pháp lệnh sau:

    sed -f replace_rules.sed *.log
    Tái sử dụng quy tắc
    Tái sử dụng quy tắc

    Viết quy tắc một lần để áp dụng cho nhiều file log

    3. Kết hợp grep với awk/grep

    Bạn có thể kết hợp grep để lọc, sed để sửa đổi và awk để trích xuất dữ liệu, tạo nên một dây chuyền xử lý log hoàn chỉnh:

    grep "ERROR" web.log | sed 's/ERROR/WARNING/g' | awk '{print $1, $2}'
    Kết hợp grep với awk/grep
    Kết hợp grep với awk/grep

    Lọc log, thay từ và trích xuất cột

    Câu hỏi thường gặp

    Sự khác biệt cốt lõi giữa sed và các trình soạn thảo như vi, nano là gì?

    vi hay nano là trình soạn thảo tương tác, yêu cầu người dùng mở file và thao tác thủ công. Ngược lại, sed là trình biên tập theo luồng. nhận dữ liệu đầu vào, thực hiện quy tắc chỉnh sửa định sẵn và trả về kết quả ngay lập tức.

    Tôi muốn thay thế đường dẫn URL có chứa dấu / nhưng sed báo lỗi thì phải làm sao?

    Mặc định sed dùng dấu / để phân cách các phần trong lệnh s nên nếu chuỗi thay thế cũng chứa / thì sẽ khiến cú pháp sẽ bị lỗi. Do đó, bạn hãy thể thay đổi ký tự phân cách bằng ký tự khác, ví dụ như #, |, hoặc @.

    Sự khác biệt giữa Regex thường và Extended Regex (sed -r) là gì?

    Regex cơ bản: Bạn phải thêm dấu gạch chéo ngược \ trước các ký tự đặc biệt như ?, +, (), {} để chúng có hiệu lực.
    Extended Regex (-r hoặc -E): Các ký tự đặc biệt được hiểu ngay lập tức, giúp viết pattern phức tạp trở nên dễ đọc hơn rất nhiều.

    Lệnh sed -i có an toàn không?

    Sử dụng sed -i có thể có rủi ro vì lệnh này ghi đè trực tiếp lên file gốc mà không hỏi lại. Nếu viết sai Regex, bạn có thể làm hỏng file cấu hình server. Do đó, bạn nên dùng -i kèm hậu tố để tạo backup tự động.

    Sed Linux là công cụ mạnh mẽ giúp xử lý log, chuẩn hóa dữ liệu và quản trị hệ thống Linux ở quy mô lớn hiệu quả. Do đó việc thành thạo lệnh sed sẽ giúp bạn chuyển từ việc chỉnh sửa thủ công sang tư duy tự động hóa, từ đó dễ dàng xây dựng các quy trình xử lý dữ liệu lặp lại, ổn định và ít phụ thuộc vào thao tác con người. Chúc bạn thao tác với lệnh sed thành công và mời bạn theo dõi các bài viết thuộc chủ đề Linux của mình bên dưới đây: 

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Hướng dẫn sử dụng lệnh pidstat trong Linux để giám sát tài nguyên các tiến trình sử dụng
    Hướng dẫn sử dụng lệnh pidstat trong Linux để giám sát tài nguyên các tiến trình sử dụng

    Lệnh pidstat là công cụ chuyên dụng trên hệ thống Linux, được sử dụng để giám sát tài nguyên mà các tiến trình đang sử dụng. Bài viết này được mình đúc kết từ quá trình trực tiếp xử lý hàng nghìn ticket tối ưu hệ thống cho khách hàng tại Vietnix, nơi mà mỗi…

    20/04/2026

    smartctl là gì? Cách sử dụng smartctl trong Linux để kiểm tra sức khỏe ổ cứng
    smartctl là gì? Cách sử dụng smartctl trong Linux để kiểm tra sức khỏe ổ cứng

    smartctl là một tiện ích dòng lệnh giúp quản lý và giám sát hệ thống S.M.A.R.T., từ đó theo dõi chi tiết sức khỏe ổ cứng HDD/SSD trong môi trường máy chủ lẫn máy trạm cá nhân. Trong bài viết này, bạn sẽ tìm hiểu cách cài đặt, sử dụng các lệnh smartctl quan trọng…

    14/04/2026

    cryptsetup là gì? Cách mã hóa phân vùng với cryptsetup (LUKS) trên Linux
    cryptsetup là gì? Cách mã hóa phân vùng với cryptsetup (LUKS) trên Linux

    cryptsetup là tiện ích dòng lệnh nguồn mở trong Linux dùng để quản lý mã hóa đĩa dựa trên dm-crypt và chuẩn LUKS, hỗ trợ tạo volume an toàn với nhiều khóa và tương thích cao. Bài viết này hướng dẫn toàn diện về cryptsetup từ cài đặt, quy trình mã hóa, quản lý key…

    14/04/2026

    Aureport là gì? Hướng dẫn sử dụng lệnh aureport trên Linux
    Aureport là gì? Hướng dẫn sử dụng lệnh aureport trên Linux

    Aureport là công cụ dòng lệnh mạnh mẽ trong hệ thống auditd Linux, chuyên tạo báo cáo thống kê tóm tắt từ các tệp nhật ký kiểm toán. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng aureport để giám sát bảo mật và phân tích hoạt động hệ thống hiệu quả. Những…

    09/04/2026

    linux

    lenh

    text