Cách sắp xếp dữ liệu trong một tệp bằng Linux

Giới thiệu

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách sắp xếp dữ liệu trong các tệp phân tách và từ đầu ra của các lệnh khác.

Bạn sẽ không ngạc nhiên khi biết rằng lệnh bạn sử dụng để thực hiện tác vụ này được gọi là "sắp xếp". Tất cả các công tắc chính của lệnh sắp xếp sẽ được cung cấp trong bài viết này.

Dữ liệu mẫu

Dữ liệu trong một tệp có thể được sắp xếp miễn là dữ liệu được phân tách theo một cách nào đó.

Ví dụ, chúng ta hãy lấy bảng giải đấu cuối cùng từ Scottish Premier League năm ngoái và lưu trữ dữ liệu trong một tệp có tên "spl".

Bạn có thể tạo tệp dữ liệu như sau với một câu lạc bộ và dữ liệu cho câu lạc bộ đó được phân tách bằng dấu phẩy trên mỗi hàng.

Đội Bàn thắng được ghi bàn Bàn thắng tiếp theo Điểm
Celtic 93 31 86
Aberdeen 62 48 71
Trái tim 59 40 65
St Johnstone 58 55 56
Motherwell 47 63 50
Hạt Ross 55 61 48
Inverness 54 48 52
Dundee 53 57 48
Partick 41 50 46
Hamilton 42 63 43
Kilmarnock 41 64 36
Dundee United 45 70 28

Cách sắp xếp dữ liệu trong tệp

Từ bảng đó, bạn có thể thấy Celtic thắng giải đấu và Dundee United đến cuối cùng. Nếu bạn là một người hâm mộ Dundee United, bạn có thể muốn làm cho bản thân cảm thấy tốt hơn và bạn có thể làm điều này bằng cách phân loại các mục tiêu ghi được.

Để thực hiện việc này, hãy chạy lệnh sau:

sort -k2 -t, spl

Lần này thứ tự sẽ như sau:

Lý do kết quả theo thứ tự này là cột 2 là cột mục tiêu được ghi và sắp xếp từ thấp nhất đến cao nhất.

Nút chuyển đổi -k cho phép bạn chọn cột để sắp xếp theo và công tắc -t cho phép bạn chọn dấu phân tách.

Để làm cho họ thực sự hạnh phúc, người hâm mộ Dundee United có thể sắp xếp theo cột 4 bằng cách sử dụng lệnh sau:

sort -k4 -t, spl

Bây giờ Dundee United đang đứng đầu và Celtic đang ở phía dưới.

Tất nhiên, điều này sẽ làm cho cả hai người hâm mộ Celtic và Dundee rất không hài lòng thực sự. Để đặt mọi thứ đúng, bạn có thể sắp xếp theo thứ tự ngược lại bằng cách sử dụng công tắc sau:

sắp xếp -k4 -t, -r spl

Một chuyển đổi khá kỳ lạ cho phép bạn sắp xếp ngẫu nhiên mà thực sự chỉ làm xáo trộn các hàng dữ liệu.

Bạn có thể làm điều này bằng cách sử dụng lệnh sau:

sắp xếp -k4 -t, -R spl

Điều này có thể gây ra vấn đề thực sự nếu bạn trộn lên -r và chuyển đổi -R của bạn.

Lệnh sắp xếp cũng có thể sắp xếp các ngày theo thứ tự tháng. Để chứng minh xem bảng sau:

tháng Dữ liệu đã sử dụng
tháng Giêng 4G
Tháng hai 3000 nghìn
tháng Ba 6000 nghìn
Tháng tư 100 triệu
có thể 5000 triệu
Tháng sáu 200 nghìn
Tháng 7 4000 nghìn
tháng Tám 2500 nghìn
Tháng Chín 3000 nghìn
Tháng Mười 1000 nghìn
Tháng mười một 3G
Tháng mười hai 2G

Bảng trên thể hiện tháng của năm và lượng dữ liệu được sử dụng trên thiết bị di động.

Bạn có thể sắp xếp các ngày theo thứ tự bảng chữ cái bằng cách sử dụng lệnh sau:

sort -k1 -t, datausedlist

Bạn cũng có thể sắp xếp theo tháng bằng cách sử dụng lệnh sau:

sắp xếp -k1 -t, -M datausedlist

Bây giờ rõ ràng là bảng trên đã cho thấy chúng theo thứ tự tháng nhưng nếu danh sách được phân bố ngẫu nhiên thì đây sẽ là một cách đơn giản để phân loại chúng.

Nhìn vào cột thứ hai, bạn có thể thấy rằng tất cả các giá trị ở định dạng có thể đọc được của con người trông không dễ dàng để sắp xếp nhưng lệnh sắp xếp có thể sắp xếp cột dữ liệu được sử dụng bằng cách sử dụng lệnh sau:

sắp xếp -k2 -t, -h datausedlist

Cách sắp xếp dữ liệu được chuyển vào từ các lệnh khác

Trong khi sắp xếp dữ liệu trong các tệp là hữu ích, lệnh sắp xếp cũng có thể được sử dụng để sắp xếp đầu ra từ các lệnh khác:

Ví dụ xem lệnh ls :

lt -lt

Lệnh trên trả về từng tệp dưới dạng hàng dữ liệu với các trường sau được hiển thị trong cột:

Bạn có thể sắp xếp danh sách theo kích thước tệp bằng cách chạy lệnh sau:

ls -lt | sắp xếp -k5

Để có được kết quả theo thứ tự ngược lại, bạn sẽ sử dụng lệnh sau:

ls -lt | sắp xếp -k5 -r

Lệnh sắp xếp cũng có thể được sử dụng cùng với lệnh ps liệt kê các tiến trình đang chạy trên hệ thống của bạn.

Ví dụ chạy lệnh ps sau trên hệ thống của bạn:

ps -eF

Lệnh trên trả về rất nhiều thông tin về các tiến trình hiện đang chạy trên hệ thống của bạn.

Một trong các cột đó là kích thước và bạn có thể muốn xem quy trình nào là lớn nhất.

Để sắp xếp dữ liệu này theo kích thước, bạn sẽ sử dụng lệnh sau:

ps -eF | sắp xếp -k5

Tóm lược

Không có nhiều lệnh sắp xếp nhưng nó có thể trở nên hữu ích rất nhanh khi sắp xếp đầu ra từ các lệnh khác thành một thứ tự có ý nghĩa, đặc biệt khi lệnh không có các công tắc sắp xếp riêng.

Để biết thêm thông tin, hãy đọc các trang hướng dẫn sử dụng cho lệnh sắp xếp.