Sử dụng lệnh sắp xếp Linux

Các mục cần sắp xếp phải được phân tách theo một cách nào đó

Dữ liệu trong một tệp văn bản Linux có thể được sắp xếp với lệnh sắp xếp miễn là mỗi phần tử được phân tách theo một cách nào đó. Thông thường, dấu phẩy được sử dụng làm dấu phân cách cho thông tin được phân tách.

Quy tắc cơ bản để sắp xếp

Lệnh sắp xếp sắp xếp lại các dòng trong một tệp văn bản để sắp xếp chúng theo số và theo thứ tự bảng chữ cái. Các quy tắc mặc định cho lệnh sắp xếp là:

Sắp xếp tệp văn bản

Để sắp xếp các dòng trong một tệp Linux được phân tách, bạn sử dụng lệnh sắp xếp như sau:

$ sort -k2 test.txt

mà sắp xếp tệp "test.txt" theo các ký tự bắt đầu từ cột thứ hai (k2 là cột thứ hai). Giả sử nội dung tập tin đầu vào là:

1, Justin Timberlake, Tiêu đề 545, Giá $ 7,30 2, Taylor Swift, Tiêu đề 723, Giá $ 7,90 3, Mick Jagger, Tiêu đề 610, Giá $ 7,90 4, Lady Gaga, Tiêu đề 118, Giá $ 7,50 5, Tiền mặt Johnny, Tiêu đề 482, Giá $ 6,50 6, Elvis Presley, Tiêu đề 335, Giá $ 7,30 7, John Lennon, Tiêu đề 271, Giá $ 7,90 8, Michael Jackson, Tiêu đề 373, Giá $ 5,50

Vì cột thứ hai trong ví dụ này chứa tên và họ, đầu ra sắp xếp được sắp xếp theo chữ cái đầu tiên của tên đầu tiên của mỗi cá nhân trong cột thứ hai — Elvis, John, Johnny, Justin, Lady, Michael, Mick và Taylor , như hình dưới đây:

6, Elvis Presley, Tiêu đề 335, Giá $ 6,30 7, John Lennon, Tiêu đề 271, Giá $ 7,90 5, Tiền mặt Johnny, Tiêu đề 482, Giá $ 6,50 1, Justin Timberlake, Tiêu đề 545, Giá $ 6,50 4, Lady Gaga, Tiêu đề 118, Giá $ 6,30 8, Michael Jackson, Tiêu đề 373, Giá $ 5,50 3, Mick Jagger, Tiêu đề 610, Giá $ 7,90 2, Taylor Swift, Tiêu đề 723, Giá $ 7,90

Nếu bạn sắp xếp tệp bằng -k3 (sử dụng nội dung dòng bắt đầu từ cột 3 — cột Số tiêu đề), đầu ra là:

4, Lady Gaga, Tiêu đề 118, Giá $ 6,30 7, John Lennon, Tiêu đề 271, Giá $ 7,90 6, Elvis Presley, Tiêu đề 335, Giá $ 6,30 8, Michael Jackson, Tiêu đề 373, Giá $ 5,50 5, Tiền mặt Johnny, Tiêu đề 482, Giá $ 6,50 1, Justin Timberlake, Tiêu đề 545, Giá $ 6,30 3, Mick Jagger, Tiêu đề 610, Giá $ 7,90 2, Taylor Swift, Tiêu đề 723, Giá $ 7,90

$ sort -k4 test.txt

tạo danh sách được sắp xếp theo giá:

8, Michael Jackson, Tiêu đề 373, Giá $ 5.50 1, Justin Timberlake, Tiêu đề 545, Giá $ 6,50 4, Lady Gaga, Tiêu đề 118, Giá $ 6,50 6, Elvis Presley, Tiêu đề 335, Giá $ 6,50 5, Tiền mặt Johnny, Tiêu đề 482, Giá $ 6,50 2, Taylor Swift, Tiêu đề 723, Giá $ 7,90 3, Mick Jagger, Tiêu đề 610, Giá $ 7,90 7, John Lennon, Tiêu đề 271, Giá $ 7,90

Đảo ngược sắp xếp

Tùy chọn -r đảo ngược sắp xếp. Ví dụ: sử dụng kết quả ở trên:

$ sort -k4 -r test.txt

sản lượng:

7, John Lennon, Title 271, Giá $ 7,90 3, Mick Jagger, Tiêu đề 610, Giá $ 7,90 2, Taylor Swift, Tiêu đề 723, Giá $ 7,90 5, Tiền mặt Johnny, Tiêu đề 482, Giá $ 6,50 6, Elvis Presley, Tiêu đề 335, Giá $ 6,30 4, Lady Gaga, Tiêu đề 118, Giá $ 6,30 1, Justin Timberlake, Tiêu đề 545, Giá $ 6,30 8, Michael Jackson, Tiêu đề 373, Giá $ 5,50

Lưu tệp được sắp xếp

Sắp xếp một tệp không lưu nó. Để lưu danh sách được sắp xếp trong một tệp, bạn sử dụng toán tử chuyển hướng:

sắp xếp -k4 -r test.txt> test_new.txt

nơi "test_new.txt" là tệp mới.

Sắp xếp đầu ra luồng

Bạn cũng có thể áp dụng lệnh sắp xếp cho đầu ra của một luồng, chẳng hạn như toán tử đường ống:

$ ls -al | sắp xếp -r -n-k5

Điều này sắp xếp đầu ra của danh sách tệp được tạo bởi lệnh ls theo kích thước tệp, bắt đầu với các tệp lớn nhất. Toán tử -n chỉ định sắp xếp số chứ không phải chữ cái.