NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
12/08/2024
Lượt xem

Tìm hiểu cách sử dụng lệnh sort trong Linux thông qua 16 ví dụ cụ thể

12/08/2024
19 phút đọc
Lượt xem

Đánh giá

Lệnh sort trong Linux được dùng để sắp xếp các dòng trong file văn bản. Mặc định, lệnh này coi mọi thứ đều là ký tự ASCII và sắp xếp dựa trên giá trị ASCII của nội dung. Tuy nhiên, bạn có thể tùy chỉnh kết quả bằng nhiều tùy chọn khác nhau. Trong bài viết này, Vietnix sẽ hướng dẫn bạn cách sử dụng lệnh sort với nhiều ví dụ cụ thể.

Lệnh sort trong Linux là gì?

Lệnh sort trong Linux là một công cụ giúp bạn sắp xếp nội dung trong file, rất phổ biến trong hệ điều hành Unix và tương tự Unix. Trong bảng mã ASCII, mỗi ký tự đều có một giá trị số riêng. 

Lệnh sort là một công cụ giúp bạn sắp xếp nội dung trong file
Lệnh sort là một công cụ giúp bạn sắp xếp nội dung trong file

Ví dụ, giá trị ASCII của “A” là 65 và của “a” là 97. Vì vậy, nếu bạn muốn sắp xếp “A” và “a”, “A” sẽ luôn xuất hiện trước. Tuy nhiên, bạn có thể tùy chỉnh để bỏ qua sự phân biệt chữ hoa chữ thường và còn có thể sắp xếp nhiều kiểu khác nhau.

Lệnh sort trong Linux có cú pháp như sau: 

sort [OPTION]... [FILE]...

Lưu ý: Bạn có thể sử dụng nhiều tùy chọn và nhiều file cùng một lúc.

Mọi người cũng xem:

9 tùy chọn của lệnh sort trong Linux

Lệnh sort trong Linux có rất nhiều tùy chọn hữu ích, bạn có thể tự mình khám phá bằng cách gõ lệnh sau vào terminal: 

man sort

Dưới đây là các tùy chọn thường sử dụng của lệnh sort:

Tùy chọnMô tả
-f, --ignore-caseSắp xếp không phân biệt chữ hoa chữ thường (ví dụ: “a” và “A” sẽ được coi là như nhau).
-M, --month-sortSắp xếp theo tháng (ví dụ: “Tháng Giêng”, “Tháng Hai”,…).
-n, --numeric-sortSắp xếp theo giá trị số (ví dụ: 1, 2, 10, 100).
-R, --random-sortXáo trộn nội dung của file một cách ngẫu nhiên.
-r, --reverseĐảo ngược thứ tự sắp xếp (ví dụ: từ lớn đến bé thay vì từ bé đến lớn).
-c, --checkKiểm tra xem một file đã được sắp xếp hay chưa.
-k, --keySắp xếp theo khóa (ví dụ: sắp xếp theo cột thứ 2 của một file dữ liệu).
-o, --outputLưu kết quả sắp xếp vào một file khác.
-u, --uniqueLoại bỏ các dòng trùng lặp.

Lưu ý: Các tùy chọn trong Linux đều phân biệt chữ hoa chữ thường

Cấu hình hệ thống

Trong quá trình làm theo các ví dụ, bạn có thể thấy kết quả hiển thị khác với kết quả của Vietnix. Để tránh nhầm lẫn, bạn nên làm một hoặc hai ví dụ trước, sau đó quay lại đây nếu cần.

Nếu bạn thấy kết quả khác, nguyên nhân có thể nhất là do cài đặt ngôn ngữ (localization) của hệ thống. Nói đơn giản, “localization” là ngôn ngữ mà hệ điều hành đang sử dụng. Mỗi ký tự sẽ được biểu diễn theo một thứ tự nhất định và thay đổi cài đặt ngôn ngữ có thể ảnh hưởng đến kết quả của lệnh sort trong Linux.

Để giải quyết tạm thời, hãy làm theo 3 bước sau:

Bước 1: Mở Terminal.

Bước 2: Gõ lệnh sau vào cửa sổ lệnh: 

export LC_ALL=C

Bước 3: Nhấn phím ENTER.

Kết quả hiển thị trên màn hình
Kết quả hiển thị trên màn hình

Lưu ý: Nếu bạn đóng Terminal, cài đặt ngôn ngữ sẽ trở lại như cũ. Bạn cần thực hiện lại các bước trên.

Để có thể giải quyết được vấn đề này mãi mãi bạn làm theo 5 bước như sau:

Bước 1: Mở Terminal.

Bước 2: Gõ lệnh sau và nhấn Enter để chỉnh sửa file: 

nano ~/.bashrc

Bước 3: Di chuyển đến cuối file và thêm dòng sau: 

export LC_ALL=C

Bước 4: Nhấn Ctrl + O để lưu, rồi Enter. Sau đó, nhấn Ctrl + X để thoát.

Bước 5: Gõ lệnh sau và nhấn Enter để cập nhật môi trường.

source ~/.bashrc
Hai lệnh dùng để mở file .bashrc và cập nhật môi trường
Hai lệnh dùng để mở file .bashrc và cập nhật môi trường

Hãy thêm một dòng như bên dưới, sau đó cập nhật môi trường.

Dòng mới đã được thêm vào
Dòng mới đã được thêm vào

Dưới đây Vietnix sẽ giới thiệu một số ví dụ về cách sử dụng lệnh sort trong Linux. Vì lệnh này sắp xếp lại nội dung của file, Vietnix sẽ sử dụng các file (letters, mix_letters, words, month, data.csv).

Ví dụ 1: Sắp xếp file chứa các chữ cái thường

Giả sử bạn có một file tên là letters chứa các chữ cái. Để sắp xếp file theo thứ tự bảng chữ cái, bạn có thể làm như sau:

Bước 1: Mở Terminal

Bước 2: Gõ lệnh và nhấn ENTER:

 sort letters 

Kết quả sẽ là các chữ cái được sắp xếp từ a đến z. Điều này là do lệnh sort sử dụng bảng mã ASCII, trong đó chữ “a” có giá trị thấp hơn chữ “z”.

Output kết quả đã sắp xếp tên file
Output kết quả đã sắp xếp tên file

Ví dụ 2: Sắp xếp một file chứa các chữ cái viết hoa và viết thường lẫn lộn

Điều gì sẽ xảy ra khi các chữ cái viết hoa và viết thường được trộn lẫn với nhau. Vietnix sẽ làm việc với một file có tên là “mix_letters”. Các bạn hãy làm theo 3 bước sau:

Bước 1: Mở Terminal trong Ubuntu.

Bước 2: Gõ lệnh sau vào cửa sổ lệnh: 

sort mix_letters

Bước 3: Nhấn phím ENTER.

Do trong bảng mã ASCII, giá trị của các chữ cái “A”, “Z”, “a” và “z” lần lượt là 65, 90, 97 và 122, nên khi bạn dùng lệnh sort, các chữ cái in hoa sẽ được xếp trước các chữ cái in thường.

Các chữ cái in hoa và thường đã được sắp xếp
Các chữ cái in hoa và thường đã được sắp xếp

Ví dụ 3: Sắp xếp không phân biệt chữ hoa chữ thường bằng lệnh sort trong Linux

Nếu bạn muốn sắp xếp mà không quan tâm đến việc chữ cái là hoa hay thường, bạn có thể làm điều đó bằng cách làm theo 3 bước sau. Sử dụng file mix_letters ở đây:

Bước 1: Mở Terminal của Ubuntu.

Bước 2: Nhập lệnh sau vào dòng lệnh: 

sort -f mix_letters

Bước 3: Nhấn nút ENTER. Như bạn thấy, các chữ cái hoa và thường bây giờ đã được xếp cùng nhau. Nhưng các chữ cái vẫn tuân theo thứ tự ASCII; bạn có thể thấy “A” xuất hiện trước “a”.

Các chữ cái đã được sắp xếp không phân biệt chữ hoa chữ thường
Các chữ cái đã được sắp xếp không phân biệt chữ hoa chữ thường

Ví dụ 4: Sắp xếp từ trong file bằng lệnh sort trong Linux

Bây giờ, Vietnix sẽ sắp xếp các từ trong một file có tên là “words”. Làm theo 3 bước sau:

Bước 1: Mở ứng dụng Terminal trong Ubuntu.

Bước 2: Trong cửa sổ Terminal, gõ lệnh sau:

sort words

Bước 3: Sau khi gõ lệnh, nhấn phím ENTER.

Các từ trong file đã được sắp xếp
Các từ trong file đã được sắp xếp

Giải thích: Lệnh này sẽ sắp xếp các từ trong file “words” theo thứ tự bảng chữ cái. Nếu hai từ có cùng chữ cái đầu tiên, hai từ này sẽ được so sánh dựa trên chữ cái thứ hai, và cứ tiếp tục như vậy. Ví dụ:

  • “zebra” sẽ đứng trước “zoo” vì “e” đứng trước “o” trong bảng chữ cái.
  • Nếu có hai từ giống nhau (ví dụ: “today”), hai từ sẽ được giữ nguyên vị trí cạnh nhau.

Ví dụ 5: Sắp xếp số bằng lệnh sort trong Linux

Lệnh sort trong Linux có thể sắp xếp số theo thứ tự. Bạn hãy thử làm theo 3 bước sau (Vietnix sẽ sử dụng một file có tên là “numbers” để làm ví dụ):

Bước 1: Mở Terminal.

Bước 2: Gõ lệnh sau:

sort -n numbers

Bước 3: Nhấn phím ENTER. Kết quả ban đầu các số trong file “numbers” lộn xộn, sau khi chạy lệnh sẽ được sắp xếp theo thứ tự.

Các số đã được sắp xếp theo thứ tự
Các số đã được sắp xếp theo thứ tự

Ví dụ 6: Sắp xếp ngược bằng lệnh sort trong Linux

Sắp xếp ngược có nghĩa là đảo ngược thứ tự sắp xếp. Giá trị lớn nhất sẽ nằm ở đầu, còn giá trị nhỏ nhất sẽ nằm ở cuối. Để làm điều này, bạn có thể thực hiện 3 bước sau:

Bước 1: Mở Terminal trong Ubuntu.

Bước 2: Gõ lệnh sau:

sort -r numbers

Bước 3: Nhấn Enter. Kết quả là dữ liệu trong file sẽ được sắp xếp theo thứ tự giảm dần.

Các số đã được sắp xếp ngược lại
Các số đã được sắp xếp ngược lại

Lưu ý: Sắp xếp ngược cũng là cách để đảm bảo các chữ cái thường đứng trước chữ cái hoa.

Ví dụ 7: Sắp xếp nhiều file bằng lệnh sort trong Linux

Sắp xếp nhiều file rất đơn giản, gần giống như sắp xếp một file. Bạn chỉ cần liệt kê nhiều file làm tham số. Ở đây mình dùng cả file chữ và file số làm ví dụ:

Bước 1: Mở Terminal

Bước 2: Gõ lệnh sau:

sort words -n numbers

Bước 3: Nhấn ENTER. Lệnh sort sẽ xem nội dung của tất cả các file như một khối và sắp xếp laik các file.

Nhiều file đã được sắp xếp bàng sort
Nhiều file đã được sắp xếp bàng sort

Ví dụ 8: Sắp xếp một cột bằng lệnh sort trong Linux

Lệnh sort trong Linux còn sắp xếp theo cột và hiển thị thông tin về các file hoặc directory, trong đó cột thứ 4 hiển thị kích thước file. Bây giờ, chúng ta sẽ sắp xếp cột này theo thứ tự tăng dần bằng tùy chọn -k. Hãy cùng làm theo 3 bước sau:

Bước 1: Mở Terminal trong Ubuntu.

Bước 2: Gõ lệnh sau vào dấu nhắc lệnh:

ls -l | sort -nk2

Bước 3: Nhấn phím ENTER. Kết quả là, các kích thước file sẽ được hiển thị theo thứ tự tăng dần.

Một cột đã được sắp xếp bằng sort
Một cột đã được sắp xếp bằng sort

Ví dụ 9: Sắp xếp và loại bỏ các từ trùng lặp bằng lệnh sort trong Linux

Trong ví dụ 4, bạn đã thấy có hai từ giống nhau và để loại bỏ, có thể sử dụng tùy chọn -u (viết tắt của từ “unique”). Cách làm này cũng được gọi là sắp xếp duy nhất. Trong ví dụ này, Vietnix sẽ sử dụng một file chứa các từ. Hãy làm theo 3 bước sau:

Bước 1: Mở Ubuntu Terminal.

Bước 2: Nhập lệnh sau vào dòng lệnh:

sort -u words

Bước 3: Nhấn phím ENTER. Ban đầu, bạn sẽ thấy có hai từ “today” trong FILE. Sau khi sắp xếp duy nhất, chỉ còn lại một từ “today”.

Output đã sắp xếp và loại đó các từ bị trùng
Output đã sắp xếp và loại đó các từ bị trùng

Ví dụ 10: Sắp xếp danh sách tháng theo thứ tự với lệnh sort

Để sắp xếp danh sách tháng theo thứ tự, bạn có thể sử dụng lệnh sort trên Linux. Lệnh này không phân biệt ngày hay năm, mà chỉ đơn giản sắp xếp tên các tháng theo thứ tự bảng chữ cái. Có 3 bước thực hiện:

Bước 1: Mở Terminal

Bước 2: Gõ lệnh:

sort months

Bước 3: Nhấn Enter. Kết quả sẽ là danh sách các tháng đã được sắp xếp theo thứ tự.

Dnah sách tháng đã được sắp xếp theo thứ tự
Dnah sách tháng đã được sắp xếp theo thứ tự

Ví dụ 11: Sắp xếp nội dung của một file và lưu kết quả vào một file mới

Bạn có thể chuyển kết quả của lệnh sort vào một file, nhưng lệnh sort trong Linux còn có một tính năng bổ sung. Bạn có thể lưu kết quả bằng cách làm theo 3 bước sau. Hãy sử dụng file numbers ở đây:

Bước 1: Mở ứng dụng Terminal trong Ubuntu.

Bước 2: Trong Terminal, nhập lệnh sau:

sort -o ten_file_moi ten_file_goc

Lưu ý: Bạn cần nhập tên của file đầu ra trước, sau đó mới đến file đầu vào.

Bước 3: Nhấn phím ENTER. Kết quả file “sorted_file” được dùng để lưu kết quả và lệnh cat trong Linux để xem nội dung của file đó.

Nội dung đã được sắp xếp và lưu vào file mới
Nội dung đã được sắp xếp và lưu vào file mới

Ví dụ 12: Kiểm tra xem file đã được sắp xếp hay chưa bằng lệnh sort trên Linux

Đôi khi khi viết tập lệnh, bạn cần kiểm tra xem một file đã được sắp xếp hay chưa. Có 3 bước dưới đây sẽ giúp bạn làm điều này một cách dễ dàng:

Bước 1: Mở Terminal của Ubuntu.

Bước 2: Gõ lệnh sau vào:

sort -c <tên file>

Bước 3: Nhấn ENTER. Nếu file đã được sắp xếp, sẽ không có kết quả gì hiển thị. Ngược lại, nếu chưa được sắp xếp, bạn sẽ thấy thông báo tương tự như dòng thứ hai trong hình.

Cách kiểm tra xem file đã sắp xếp hay chưa
Cách kiểm tra xem file đã sắp xếp hay chưa

Ví dụ 13: Sắp xếp ngẫu nhiên bằng lệnh sort trên Linux

Đôi khi, bạn cần tạo ra kết quả ngẫu nhiên, lệnh sort trên Linux có thể giúp bạn làm điều đó. Hãy sử dụng file sorted_file từ “Ví dụ 11”. Làm theo 3 bước sau:

Bước 1: Mở Terminal của Ubuntu.

Bước 2: Nhập lệnh sau vào dòng lệnh:

sort -R sorted_file

Bước 3: Nhấn phím ENTER. Kết quả của bạn có thể giống hoặc khác với Vietnix. Mỗi lần thực hiện, bạn sẽ nhận được kết quả khác nhau.

Các số đã được sắp xếp ngẫu nhiên
Các số đã được sắp xếp ngẫu nhiên

Ví dụ 14: Kết hợp lệnh sort trong Linux và join

Join được dùng để nối các dòng của hai file với nhau. Để nối các file đã được sắp xếp, làm theo 3 bước sau:

Bước 1: Mở Terminal trong Ubuntu.

Bước 2: Gõ lệnh sau:

cat join <(sort words) <(sort -n numbers)

Lưu ý: Bạn có thể tùy chỉnh các tùy chọn bên trong dấu ngoặc tròn, miễn là giữ nguyên khoảng cách.

Bước 3: Nhấn phím ENTER. Kết quả sẽ cho thấy sự khác biệt giữa “sắp xếp nhiều file” và “nối các file đã sắp xếp”. Lệnh “join” chỉ đơn giản là nối kết quả của hai file khác nhau, không làm gì thêm.

Output sau khi kết hợp lệnh sort và join
Output sau khi kết hợp lệnh sort và join

Ví dụ 15: Sắp xếp dữ liệu theo dấu phân cách bằng lệnh sort trong Linux

Mặc định, lệnh sort trong Linux sẽ sắp xếp dữ liệu theo khoảng trắng. Tuy nhiên, bạn có thể tùy chỉnh dấu phân cách khác. Ví dụ, mình sẽ dùng một file CSV (data.csv) với dấu phẩy (,) là dấu phân cách. Có 3 bước thực hiện:

Bước 1: Mở Terminal trong Ubuntu.

Bước 2: Gõ lệnh sau:

sort -t, -k3 data.csv

Bước 3: Nhấn ENTER. Dấu phẩy (,) sau tùy chọn -t là do bạn đang dùng dấu phẩy làm ký tự phân tách. -k3 nghĩa là muốn sắp xếp theo cột thứ 3 trong file.

Dữ liệu đã được sắp xếp theo dấu cách
Dữ liệu đã được sắp xếp theo dấu cách

Ví dụ 16: Sắp xếp theo trường bằng lệnh sort trong Linux

Nếu bạn muốn sắp xếp theo cột thứ hai (tuổi), kết quả có thể không như mong muốn vì lệnh sắp xếp sẽ dựa trên cả “Mr.” và “Ms.” ở đầu mỗi dòng. Để giải quyết vấn đề này, chúng ta cần chỉ định cụ thể trường mà lệnh sắp xếp sẽ sử dụng.

Chỉ định cụ thể trường mà lệnh sắp xếp sẽ sử dụng
Chỉ định cụ thể trường mà lệnh sắp xếp sẽ sử dụng

Có 3 bước thực hiện trên Ubuntu Terminal:

Bước 1: Mở Ubuntu Terminal.

Bước 2: Nhập lệnh sau:

sort -t, -k2.3,2.5 data.csv 

Bước 3: Nhấn Enter. Kết quả lệnh sẽ nhìn vào cột thứ hai, bỏ qua 3 ký tự đầu, rồi dùng 2 ký tự tiếp theo để sắp xếp dữ liệu.

Dữ liệu đã được sắp xếp theo trường
Dữ liệu đã được sắp xếp theo trường

Lời kết

Qua bài viết này, chúng ta đã khám phá chi tiết về lệnh sort, một công cụ mạnh mẽ trong Linux giúp sắp xếp và quản lý dữ liệu hiệu quả. Hy vọng rằng những kiến thức này sẽ giúp bạn tận dụng tối đa lệnh sort và nâng cao khả năng làm việc với dữ liệu trong môi trường Linux

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG