Liên hệProfile
Danh mục

Mục Lục

    Cách sử dụng lệnh sort trong Linux qua 16 ví dụ thực tế

    Nguyễn Hưng

    Ngày đăng:

    01/04/2026

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

    01/04/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:

    01/04/2026

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

    01/04/2026

    Mục lục

    Lệnh sort trong Linux là công cụ dùng để sắp xếp các dòng dữ liệu trong file văn bản hoặc trong đầu ra của lệnh khác theo một thứ tự xác định, mặc định dựa trên quy tắc so sánh ký tự trong bảng mã ASCII. Với kinh nghiệm hơn 10 năm thực chiến với Linux, mình muốn chia sẻ một góc nhìn sâu hơn về sort, từ khái niệm, cú pháp, các tùy chọn thường dùng cho đến những ví dụ thao tác thực tế và các lưu ý quan trọng khi sắp xếp dữ liệu theo chữ, số, tháng hoặc theo từng cột.

    Những điểm chính

    Quan điểm của mình: Lệnh sort là một nền tảng cốt lõi của việc xử lý dữ liệu trên dòng lệnh Linux, vượt trên chức năng sắp xếp thông thường. Giá trị thực sự của nó được bộc lộ mạnh mẽ nhất khi đóng vai trò then chốt trong các chuỗi lệnh (pipelines). Với một quản trị viên hệ thống đối mặt với file log khổng lồ; sort chính là bước đầu tiên để tổ chức sự hỗn loạn đó, gom nhóm các dòng liên quan để các lệnh như uniq hay awk có thể phân tích hiệu quả. Việc nắm vững sort vì thế sẽ nâng tầm terminal thành một công cụ phân tích dữ liệu mạnh mẽ. Dưới đây là những điểm chính cần nắm trong bài viết này:

    • Khái niệm: Hiểu rõ lệnh sort là công cụ dùng để sắp xếp dữ liệu, giúp bạn nắm vững nguyên tắc hoạt động và các quy tắc so sánh mặc định.
    • Cú pháp lệnh sort: Nắm vững cấu trúc lệnh cơ bản và các thành phần tùy chọn để sắp xếp dữ liệu linh hoạt từ file hoặc đầu vào chuẩn.
    • Các tùy chọn lệnh sort: Nắm vững các tham số chính để sắp xếp dữ liệu linh hoạt theo cột, số, thứ tự, và loại bỏ dòng trùng lặp.
    • Ví dụ thực tế lệnh sort: Nắm vững cách sử dụng lệnh qua các ví dụ thực tế về sắp xếp cột, số, và kết hợp với các lệnh khác.
    • Lưu ý khi dùng lệnh sort: Tránh sai sót bằng cách chọn đúng tùy chọn cho số, cột, và hiểu rõ các quy tắc sắp xếp mặc định.
    • Câu hỏi thường gặp: Được giải đáp các thắc mắc liên quan đến lệnh sort trong Linux.

    Lệnh sort trong Linux là gì?

    Lệnh sort trong Linux là lệnh dùng để sắp xếp các dòng dữ liệu trong file văn bản hoặc trong đầu ra của một lệnh khác theo một thứ tự xác định, mặc định dựa trên quy tắc so sánh ký tự trong bảng mã ASCII. Lệnh này hỗ trợ nhiều kiểu sắp xếp như theo chữ cái, theo giá trị số, theo tháng, sắp xếp đảo ngược, xáo trộn ngẫu nhiên, loại bỏ dòng trùng lặp và sắp xếp theo cột, trong đó toàn bộ dòng được coi là khóa sắp xếp mặc định và khoảng trắng được sử dụng làm ký tự phân tách trường.

    Lệnh sort trong Linux là lệnh dùng để sắp xếp các dòng dữ liệu trong file văn bản
    Lệnh sort trong Linux là lệnh dùng để sắp xếp các dòng dữ liệu trong file văn bản

    Cụ thể hơn, khi sắp xếp theo thứ tự ASCII, lệnh sort áp dụng quy tắc so sánh sau (*):

    • Ký tự đặc biệt (!, “, #, $, …) đứng trước chữ và số.
    • Chữ số (0–9) đứng trước chữ cái.
    • Chữ in hoa (A–Z) được ưu tiên trước chữ thường (a–z).
    • So sánh được thực hiện lần lượt từ trái sang phải, dòng nào có chuỗi ký tự “nhỏ hơn” theo bảng ASCII sẽ được xếp ở vị trí trước.

    Cú pháp lệnh sort trong Linux là gì?

    Cú pháp lệnh sort trong Linux được xây dựng với phần tên lệnh kèm theo các tùy chọn và danh sách file đầu vào, cho phép sắp xếp dữ liệu linh hoạt theo nhiều tiêu chí khác nhau.

    Cú pháp: sort [options] [file(s)].

    Trong đó:

    • options: Không bắt buộc, dùng để điều chỉnh kiểu sắp xếp (không phân biệt hoa thường, sắp xếp số, sắp xếp theo tháng, sắp xếp theo khóa cột, đảo ngược thứ tự, loại bỏ dòng trùng lặp, ghi kết quả ra file khác,…).
    • file_name: Tên một hoặc nhiều file cần sắp xếp; nếu không chỉ định file, lệnh sort sẽ nhận dữ liệu từ stdin (đầu vào chuẩn), thường được sử dụng khi kết hợp với các lệnh khác thông qua pipeline.

    Các tùy chọn thường dùng của lệnh sort

    Các tùy chọn thường dùng của lệnh sort giúp kiểm soát cách dữ liệu được sắp xếp theo chữ, số, tháng, khóa cột, thứ tự tăng/giảm và xử lý dòng trùng lặp, từ đó linh hoạt áp dụng trong nhiều dạng file văn bản và log khác nhau. Dưới đây là bảng tổng hợp chi tiết:

    Tùy chọnCú pháp ví dụChức năng chính
    -f, --ignore-casesort -f names.txtSắp xếp bỏ qua phân biệt chữ hoa và chữ thường, “Apple” và “apple” được coi như nhau trong quá trình so sánh.
    -M, --month-sortsort -M months.txtSắp xếp các dòng là tên tháng theo thứ tự tháng trong năm (January, February,…), thay vì dựa trên thứ tự chữ cái.
    -n, --numeric-sortsort -n numbers.txtSắp xếp theo giá trị số, đảm bảo thứ tự 1, 2, 10, 100,… đúng với giá trị số, không theo thứ tự ký tự ASCII.
    -r, --reversesort -r data.txtĐảo ngược thứ tự sắp xếp hiện tại (ví dụ từ Z → A hoặc từ lớn → nhỏ) khi kết hợp với sắp xếp chữ hoặc số.
    -R, --random-sortsort -R list.txtXáo trộn các dòng trong file theo thứ tự ngẫu nhiên, mỗi lần chạy có thể cho kết quả khác nhau.
    -u, --uniquesort -u words.txtSắp xếp đồng thời loại bỏ các dòng trùng lặp, chỉ giữ lại đúng một dòng cho mỗi giá trị giống nhau.
    -c, --checksort -c demo.txtKiểm tra file đã được sắp xếp đúng với tiêu chí hiện tại hay chưa, nếu sai sẽ thông báo vị trí dòng bị lệch thứ tự.
    -k, --key=POSsort -k2 data.txtSắp xếp dựa trên khóa (field) tại vị trí POS, thường kết hợp với -n, -r để sắp xếp theo cột số cụ thể, ví dụ cột thứ 2.
    -t, --field-separator=CHARsort -t, -k3 users.csvĐặt ký tự phân tách trường (field separator) thay cho khoảng trắng mặc định, hay dùng với file CSV hoặc dữ liệu phân tách bởi dấu phẩy, dấu chấm phẩy.
    -o, --output=FILEsort input.txt -o output.txtGhi kết quả sắp xếp ra file được chỉ định, có thể dùng để ghi đè file đầu vào hoặc lưu sang file mới.

    Ví dụ 1: Sắp xếp mặc định theo bảng mã ASCII

    Khi muốn sắp xếp các dòng trong file theo thứ tự mặc định dựa trên bảng mã ASCII mà không dùng thêm tùy chọn, bạn có thể sử dụng lệnh sau:

    sort example.txt
    Sắp xếp mặc định theo bảng mã ASCII
    Sắp xếp mặc định theo bảng mã ASCII

    Ví dụ 2: Sắp xếp không phân biệt chữ hoa chữ thường

    Nếu cần sắp xếp danh sách từ nhưng bỏ qua sự khác nhau giữa chữ hoa và chữ thường (ví dụ “Apple” và “apple” được xử lý như nhau), hãy áp dụng tùy chọn -f như sau:

    sort -f fruit
    Sắp xếp không phân biệt chữ hoa chữ thường
    Sắp xếp không phân biệt chữ hoa chữ thường

    Ví dụ 3: Sắp xếp số theo kiểu mặc định (ASCII)

    Trong trường hợp dữ liệu là số nhưng vẫn để sort hoạt động với chế độ so sánh ký tự mặc định, bạn có thể thực hiện lệnh sau để quan sát cách sắp xếp dạng “1, 100, 12, 2, …”:

    sort numbers
    Sắp xếp số theo kiểu mặc định
    Sắp xếp số theo kiểu mặc định

    Ví dụ 4: Sắp xếp theo giá trị số với -n

    Khi muốn sắp xếp danh sách số theo đúng giá trị tăng dần về mặt số học thay vì thứ tự ký tự, hãy sử dụng tùy chọn -n như sau:

    sort -n numbers.txt
    Sắp xếp theo giá trị số với -n
    Sắp xếp theo giá trị số với -n

    Ví dụ 5: Sắp xếp đảo ngược với -r

    Để đảo ngược thứ tự kết quả sắp xếp (ví dụ từ Z đến A hoặc từ lớn đến nhỏ), bạn có thể thêm tùy chọn -r vào câu lệnh sort như sau:

    sort -r numbers.txt
    Sắp xếp đảo ngược với -r
    Sắp xếp đảo ngược với -r

    Ví dụ 6: Sắp xếp theo cột (key) với -k

    Khi file dữ liệu có nhiều cột và bạn muốn sắp xếp theo một cột nhất định, chẳng hạn cột thứ 2 chứa giá trị số, có thể kết hợp -k và -n như sau:

    sort -n -k2 example.txt

    Ví dụ 7: Sắp xếp theo cột với dấu phân tách tùy chỉnh

    Nếu dữ liệu được phân tách bằng dấu phẩy như file CSV và bạn cần sắp xếp theo cột thứ 3, có thể dùng -t để đặt dấu phân tách rồi sắp xếp như sau:

    sort -t, -k3 example.csv

    Ví dụ 8: Sắp xếp và loại bỏ các giá trị giống nhau

    Khi muốn vừa sắp xếp dữ liệu vừa loại bỏ các dòng trùng nhau, chỉ giữ lại một bản ghi duy nhất cho mỗi giá trị, bạn có thể dùng tùy chọn -fu như sau:

    sort -fu fruit
    Sắp xếp và loại bỏ các giá trị giống nhau
    Sắp xếp và loại bỏ các giá trị giống nhau

    Ví dụ 9: Sắp xếp theo tháng với -M

    Đối với danh sách chứa tên tháng và cần sắp xếp theo thứ tự thời gian trong năm thay vì thứ tự chữ cái, bạn có thể sử dụng tùy chọn -M như sau:

    sort -M months.txt
    Sắp xếp theo tháng với -M
    Sắp xếp theo tháng với -M

    Ví dụ 10: Sắp xếp theo tháng và đảo ngược

    Nếu cần danh sách tháng theo thứ tự ngược từ cuối năm về đầu năm, bạn có thể kết hợp -M với -r trong câu lệnh sau:

    sort -Mr months.txt

    Ví dụ 11: Xáo trộn nội dung file một cách ngẫu nhiên

    Trong trường hợp bạn muốn xáo trộn thứ tự các dòng trong file để tạo danh sách ngẫu nhiên, hãy sử dụng tùy chọn -R với lệnh sau:

    sort -R list.txt

    Ví dụ 12: Kiểm tra file đã được sắp xếp hay chưa

    Khi cần kiểm tra một file đã được sắp xếp đúng theo tiêu chí hiện tại hay chưa và phát hiện dòng vi phạm, bạn có thể dùng tùy chọn -c như sau:

    sort -c demo-example.txt

    Ví dụ 13: Sắp xếp nhiều file cùng lúc

    Nếu bạn muốn sắp xếp dữ liệu của nhiều file như một khối chung rồi in ra kết quả đã sắp xếp, có thể truyền nhiều tên file cho sort theo cú pháp sau:

    sort words numbers

    Ví dụ 14: Ghi kết quả sắp xếp ra file khác

    Khi cần lưu lại kết quả sắp xếp để sử dụng về sau hoặc để tránh thay đổi file gốc, bạn có thể dùng tùy chọn -o để ghi ra file mới như sau:

    sort number.txt -o sorted-number.txt

    Ví dụ 15: Sắp xếp dữ liệu lấy từ lệnh khác qua pipe

    Trong các chuỗi lệnh pipeline, nếu muốn sắp xếp kết quả liệt kê thư mục /etc theo thứ tự chữ cái, bạn có thể kết hợp ls với sort như sau:

    ls /etc | sort 

    Ví dụ 16: Kết hợp sort với uniq để đếm tần suất từ

    Khi cần thống kê tần suất xuất hiện của từng từ trong một file văn bản, bạn có thể kết hợp tr, sort, uniq và sort theo chuỗi lệnh sau:

    cat vanban.txt | tr ' ' '\n' | sort | uniq -c | sort -n -r 

    Kinh nghiệm của mình: 

    Chuỗi lệnh sort | uniq -c | sort -nr là một kỹ thuật hiệu quả để tổng hợp và phân tích dữ liệu văn bản, đặc biệt hữu ích trong việc chẩn đoán các vấn đề hệ thống. Trong thực tế, nó thường được áp dụng để phân tích các tệp log. Ví dụ, khi xử lý log của máy chủ web, phương pháp này cho phép xác định các địa chỉ IP có tần suất truy cập cao nhất (một chỉ số để phát hiện tấn công DoS) hoặc thống kê các endpoint API phát sinh lỗi thường xuyên nhất. Ưu điểm của nó là khả năng xử lý và tóm tắt hiệu quả các tệp dữ liệu lớn, chuyển đổi thông tin từ hàng triệu dòng thành một báo cáo tần suất cô đọng và dễ diễn giải.

    Lưu ý khi sử dụng lệnh sort

    Khi sử dụng lệnh sort trong Linux, bạncần lưu ý một số điểm kỹ thuật để kết quả sắp xếp đúng mong muốn và tránh sai lệch khi xử lý dữ liệu thực tế:

    • Hiểu rõ chế độ sắp xếp mặc định theo ASCII: Mặc định lệnh sort sắp xếp theo thứ tự ASCII, nên ký tự đặc biệt đứng trước số, số đứng trước chữ, chữ in hoa đứng trước chữ thường Nếu dữ liệu là số nhưng không dùng -n thì kết quả sẽ dựa trên ký tự chứ không phải giá trị số.
    • Phân biệt sắp xếp chữ thường/chữ hoa và bỏ qua hoa thường: Khi không dùng -f, chữ hoa và chữ thường được xử lý khác nhau và ảnh hưởng thứ tự sắp xếp; nếu cần danh sách về mặt chữ hoa – chữ thường, nên thêm -f để không phân biệt case.
    • Chọn đúng kiểu sắp xếp số hoặc tháng: Với cột chứa số, nên dùng -n (hoặc thêm -r khi cần đảo ngược) để tránh tình trạng 100 đứng trước 2. Với dữ liệu là tháng, cần dùng -M để sort theo thứ tự tháng chứ không theo chữ cái.
    • Xác định chính xác cột và dấu phân tách khi dùng -k, -t: Khi sắp xếp theo cột, cần kiểm tra lại vị trí cột (POS) và ký tự phân tách trường -t, vì cấu trúc dữ liệu sai hoặc chọn nhầm cột sẽ dẫn đến thứ tự sắp xếp không đúng mục đích.
    • Cẩn trọng khi dùng -o để ghi đè file: Tùy chọn -o cho phép ghi trực tiếp kết quả sắp xếp vào file, kể cả file nguồn. Khi dùng sort input.txt -o input.txt cần chắc chắn về dữ liệu vì nội dung sẽ bị ghi lại theo kết quả sắp xếp, không thể quay về trạng thái ban đầu.
    • Kết hợp sort với uniq và các lệnh khác cần đúng thứ tự: Khi sử dụng sort với uniq để loại trùng hoặc đếm tần suất, phải sort trước rồi mới uniq (sort file | uniq hoặc sort file | uniq -c), nếu đảo ngược thứ tự pipe thì uniq không hoạt động đúng do dữ liệu chưa được gom nhóm.
    Lưu ý khi sử dụng lệnh sort
    Lưu ý khi sử dụng lệnh sort

    Theo kinh nghiệm của mình, sức mạnh thật sự của sort được phát huy tối đa khi bạn kết hợp nó với các lệnh khác qua pipe (|). Cá nhân mình đặc biệt thích công thức sort file.log | uniq -c | sort -nr. Chuỗi lệnh này giúp mình nhanh chóng tìm ra những dòng xuất hiện nhiều nhất trong một file log, cực kỳ hữu ích để phát hiện lỗi hoặc phân tích tần suất. Nó biến một công cụ đơn giản thành một vũ khí phân tích dữ liệu mạnh mẽ.

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

    Lệnh sort trong Linux có bị ảnh hưởng bởi thiết lập locale không?

    Có, lệnh sort trong Linux chịu ảnh hưởng bởi các biến môi trường locale như LC_COLLATE hoặc LC_ALL, điều này tác động đến quy tắc so sánh ký tự (thứ tự chữ cái, cách xử lý dấu tiếng Việt, ký tự Unicode…). Nếu muốn sort theo quy tắc ASCII thuần, có thể đặt LC_ALL=C trước khi chạy lệnh, ví dụ: LC_ALL=C sort file.txt.

    Lệnh sort xử lý file dung lượng lớn như thế nào và cần lưu ý gì về hiệu năng?

    Với các file rất lớn, sort có thể tạo file tạm và dùng nhiều bộ nhớ, dẫn đến thời gian xử lý tăng đáng kể nếu hệ thống phải swap. Trong trường hợp này nên cân nhắc tách nhỏ file, sort từng phần rồi merge, hoặc điều chỉnh tham số môi trường/bộ nhớ (như --buffer-size, thư mục --temporary-directory) để tối ưu hiệu năng.

    Có thể dùng lệnh sort để sắp xếp dữ liệu có đơn vị “K, M, G” (dung lượng, kích thước) không?

    Có, bạn có thể sử dụng tùy chọn -h (human-numeric-sort) trong GNU sort để sắp xếp các giá trị dạng “2K, 10M, 1G” theo đúng thứ tự dung lượng. Ví dụ: sort -h sizes.txt sẽ sắp xếp danh sách kích thước có đơn vị thân thiện theo giá trị thực tế thay vì theo thứ tự chữ cái.

    Lệnh sort trong Linux là một trong những công cụ xử lý văn bản quan trọng, cho phép sắp xếp và tổ chức lại dữ liệu theo nhiều tiêu chí như ký tự, số, tháng, khóa cột, đồng thời hỗ trợ loại bỏ trùng lặp và kết hợp linh hoạt với các lệnh khác qua pipeline. Sau khi nắm vững cú pháp, các tùy chọn cùng các ví dụ thực hành, bạn có thể áp dụng lệnh sort trong Linux để tối ưu quy trình sắp xếp log, báo cáo và file dữ liệu, đảm bảo kết quả hiển thị rõ ràng, có cấu trúc và dễ phân tích.

    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

    apt-get là gì? Hướng dẫn sử dụng lệnh apt-get trong Linux để quản lý gói phần mềm
    apt-get là gì? Hướng dẫn sử dụng lệnh apt-get trong Linux để quản lý gói phần mềm

    apt-get là tiện ích dòng lệnh trên các hệ điều hành Linux dựa trên Debian, hỗ trợ bạn cài đặt, nâng cấp, gỡ bỏ và quản lý phụ thuộc gói phần mềm một cách tự động và chính xác. Trong bài viết này, bạn sẽ tìm hiểu chi tiết cách sử dụng apt-get từ những…

    08/04/2026

    APT Linux là gì? Hướng dẫn quản lý gói phần mềm với apt trên Linux
    APT Linux là gì? Hướng dẫn quản lý gói phần mềm với apt trên Linux

    Lệnh apt Linux là công cụ quản lý gói phần mềm quen thuộc trên các hệ điều hành Debian/Ubuntu, giúp người dùng dễ dàng cài đặt, cập nhật và gỡ bỏ ứng dụng chỉ với vài dòng lệnh đơn giản. Với khả năng tự động xử lý phụ thuộc và giao diện thân thiện hơn…

    08/04/2026

    Hướng dẫn sử dụng lệnh lsof để theo dõi file đang mở trên Linux
    Hướng dẫn sử dụng lệnh lsof để theo dõi file đang mở trên Linux

    Lệnh lsof trong Linux là công cụ giúp bạn liệt kê các file, thư mục, thiết bị và socket đang được tiến trình sử dụng, từ đó nhanh chóng xác định process đang giữ file, port hoặc thư mục gây lỗi hệ thống. Dựa trên trải nghiệm xử lý sự cố thực tế như không…

    08/04/2026

    Hướng dẫn sử dụng lệnh glances Linux giám sát hệ thống toàn diện cho Sysadmin
    Hướng dẫn sử dụng lệnh glances Linux giám sát hệ thống toàn diện cho Sysadmin

    Lệnh glances trong Linux là công cụ giám sát hệ thống đa năng, cho phép bạn quan sát CPU, RAM, disk, network, tiến trình và nhiều chỉ số khác trên một dashboard duy nhất. Từ kinh nghiệm vận hành hàng trăm server và VPS, mình thường dùng Glances để kiểm tra nhanh điểm nghẽn tài…

    08/04/2026

    linux

    lenh

    text