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à:
- Văn bản bắt đầu bằng một số xuất hiện trước văn bản bắt đầu bằng một chữ cái; số thấp hơn sắp xếp trước.
- Văn bản bắt đầu bằng một chữ cái xuất hiện trong bảng chữ cái trước đó, chữ cái đầu tiên của các mục nhập văn bản khác được sắp xếp trước văn bản bắt đầu bằng một chữ cái xuất hiện sau trong bảng chữ cái.
- Trường hợp văn bản bắt đầu bằng chữ hoa và chữ thường của cùng một chữ cái, thể hiện chữ thường được sắp xếp đầu tiên.
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.txtmà 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,50Vì 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,90Nế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,90và
$ sort -k4 test.txttạ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.txtsả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,50Lư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.txtnơ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.