67 Nguyễn Thị Định, Phường An Hải, TP. Đà Nẵng
Hướng dẫn

Hướng dẫn sử dụng câu lệnh sort để xử lí text trên Linux

Hướng dẫn sử dụng câu lệnh sort để xử lí text trên Linux
Chia sẻ

Là một công cụ quen thuộc trong tay sysadmin, công cụ sort giúp chúng ta dễ dàng sắp xếp các dữ liệu dạng text theo nhiều cách mà không làm thay đổi files gốc Công cụ sort được sử dụng trong Linux để in output ra theo một thứ tự...

Khi sắp xếp theo bảng chữ cái, câu lệnh sẽ kiểm tra thứ tự đầu tiên của mỗi dòng và sắp xếp chúng theo đúng thứ tự
Khi sắp xếp theo số, câu lệnh kiểm tra số ở mỗi dòng và sắp xếp các dòng theo thứ tự tăng hoặc giảm theo ý muốn của chúng ta
Tóm lại, sort là một câu lệnh hữu ích khi bạn cần đọc một file rất lớn hoặc danh sách chưa được sắp xếp đúng cách khiến bạn tốn nhiều thời gian để đọc chúng. Để xử lí vấn đề này, chúng ta sử dụng câu lệnh sort để sắp xếp nội dung của files hoặc danh ssch. Câu lệnh sort xử lí data dưới định dạng ASCII. Có một số tuỳ chọn hữu ích cho câu lệnh sort có nhằm thay đổi hành động của câu lệnh. Một số ví dụ được trình bày dưới đây, đồng thời với cú pháp của câu lệnh này

Cú pháp câu lệnh
sort [OPTION]... [FILE]... sort [OPTION]... --files0-from=F
Ví dụ

Ở ví dụ đầu tiên, chúng ta sử dụng câu lệnh sort mà không có tuỳ chọn đi kèm. Nó sẽ sắp xếp các dòng theo bảng chữ cái bằng cách sắp xếp chữ cái đầu tiên của mỗi dòng. Lưu ý, với cùng một chữ cái thì dòng bắt đầu bằng chữ thường sẽ xếp trên những dòng bắt đầu bằng chữ hoa

cat test.txt Dr.B.R.Ambedkar MahatmaJyotibaPhule Budhha ChatrapatiShahuMaharaj budhha Ramaai
sort test.txt budhha Budhha ChatrapatiShahuMaharaj Dr.B.R.Ambedkar MahatmaJyotibaPhule Ramaai

Để đảo chiều sắp xếp các bạn thêm tham số -r

sort -r test.txt Ramaai MahatmaJyotibaPhule Dr.B.R.Ambedkar ChatrapatiShahuMaharaj Budhha budhha

Để sắp xếp theo chữ số các bạn dùng tham số -n

cat numeric.txt 14 04 34 1891 938 378 2356
sort -n numeric.txt 04 14 34 378 938 1891 2356
sort -nr numeric.txt 2356 1891 938 378 34 14 04

Bạn có thể sắp xếp theo cột nếu file có nhiều cột. Sử dụng tham số -k kèm với số cột trong files, lưu ý ở dưới đây, nếu chúng tôi chỉ dùng tham số -k thì nó sẽ sắp xếp cột 2 dựa theo chữ số đều tiên của cột chứ không phải giá trị của toàn bộ số trong cột, nếu bạn muốn làm điều này thì bạn thêm tham số -n vào nữa nhé

cat file2.txt Advika 1 Amit 30 Ajit 28 Abhi 278 Chirag 2
sort -k 2 file2.txt Advika 1 Chirag 2 Abhi 278 Ajit 28 Amit 30

Một ví dụ rõ hơn kết hợp với tham số -nk

ls -l total 0 -rw-r--r-- 1 amwaghma hpcapp 42 Aug 20 19:30 file2.txt -rw-r--r-- 1 amwaghma hpcapp 31 Aug 20 19:51 months.txt -rw-r--r-- 1 amwaghma hpcapp 27 Aug 20 19:20 numeric.txt -rw-r--r-- 1 amwaghma hpcapp 73 Aug 20 19:49 test.txt
ls -l | sort -nk 5 total 0 -rw-r--r-- 1 amwaghma hpcapp 27 Aug 20 19:20 numeric.txt -rw-r--r-- 1 amwaghma hpcapp 31 Aug 20 19:51 months.txt -rw-r--r-- 1 amwaghma hpcapp 42 Aug 20 19:30 file2.txt -rw-r--r-- 1 amwaghma hpcapp 73 Aug 20 19:49 test.txt

Ngoài ra bạn có thể thêm tham số -u để xoá bỏ các dòng bị lặp lại

cat test.txt Dr.B.R.Ambedkar MahatmaJyotibaPhule ChatrapatiShahuMaharaj Dr.B.R.Ambedkar budhha Ramaai Dr.B.R.Ambedkar
sort test.txt budhha ChatrapatiShahuMaharaj Dr.B.R.Ambedkar Dr.B.R.Ambedkar Dr.B.R.Ambedkar MahatmaJyotibaPhule Ramaai
sort -u test.txt budhha ChatrapatiShahuMaharaj Dr.B.R.Ambedkar MahatmaJyotibaPhule Ramaai

Một tuỳ chọn thú vị là bạn có thể kiểm tra file này được sắp xếp hay chưa, bằng cách sử dụng tham số -c. Nếu dòng đó đã được sắp xếp rồi thì bạn sẽ không nhận được output gì hết, sort sẽ check dòng tiếp theo nếu nó chưa được sắp thì sẽ in ra thông báo cho bạn. Chẳng hạn như trong ví dụ dưới đây

cat test.txt Dr.B.R.Ambedkar MahatmaJyotibaPhule ChatrapatiShahuMaharaj budhha Ramaai
sort test.txt budhha ChatrapatiShahuMaharaj Dr.B.R.Ambedkar MahatmaJyotibaPhule Ramaai
sort -c test.txt sort: test.txt:3: disorder: ChatrapatiShahuMaharaj

Bạn còn có thể sắp xếp các tháng trong files với tham số -M

cat months.txt February December January July
sort -M months.txt January February July December
sort -Mr months.txt December July February January

Bạn cũng có thể cho sort nhiều files một lúc với tham số -n

cat test.txt numeric.txt Dr.B.R.Ambedkar MahatmaJyotibaPhule ChatrapatiShahuMaharaj budhha Ramaai 14 04 34 1891 938 378 2356
sort test.txt -n numeric.txt budhha ChatrapatiShahuMaharaj Dr.B.R.Ambedkar MahatmaJyotibaPhule Ramaai 04 14 34 378 938 1891 2356

Bạn cũng có thể lưu lại kết quả dùng một trong những cách dưới đây

sort test.txt > sortfile sort -o sortfile test.txt
Chia sẻ

Bài viết liên quan

Tối ưu chi phí hạ tầng: chọn đúng cấu hình, thuê theo nhu cầu

Tối ưu chi phí hạ tầng: chọn đúng cấu hình, thuê theo nhu cầu

Cách giảm chi phí hạ tầng hợp lý: chọn đúng cấu hình (right-sizing), thuê theo nhu cầu, kết hợp dịch vụ và rà soát tài nguyên định kỳ mà không ảnh hưởng vận hành

Cách săn khuyến mãi VPS/máy chủ, tránh bẫy giá rẻ

Cách săn khuyến mãi VPS/máy chủ, tránh bẫy giá rẻ

Cách tận dụng khuyến mãi VPS và máy chủ hợp lý, đọc kỹ điều kiện gia hạn và nhận biết bẫy giá rẻ ảnh hưởng chất lượng dịch vụ

Chọn nhà cung cấp VPS/máy chủ: tiêu chí cần kiểm tra

Chọn nhà cung cấp VPS/máy chủ: tiêu chí cần kiểm tra

Các tiêu chí chọn nhà cung cấp VPS và máy chủ: uptime/SLA, hạ tầng data center, peering, hỗ trợ kỹ thuật và chính sách hoàn tiền, kèm cách đọc cam kết dịch vụ

Phần mềm mã nguồn mở thay thế để tiết kiệm bản quyền

Phần mềm mã nguồn mở thay thế để tiết kiệm bản quyền

Gợi ý các phần mềm mã nguồn mở thay thế giải pháp có phí cho máy chủ: hệ điều hành, cơ sở dữ liệu, web server, control panel và ảo hóa, kèm lưu ý chi phí vận hành

So sánh bản quyền control panel: cPanel, DirectAdmin, Plesk

So sánh bản quyền control panel: cPanel, DirectAdmin, Plesk

So sánh cPanel, DirectAdmin và Plesk về tính năng, hệ điều hành hỗ trợ và chi phí bản quyền, kèm gợi ý chọn control panel theo số website và nhu cầu

Các loại bản quyền Windows Server và cách chọn cho đúng

Các loại bản quyền Windows Server và cách chọn cho đúng

Hiểu cấp phép Windows Server theo core, CAL và các kênh OEM/Volume/CSP, phân biệt Standard và Datacenter để chọn bản quyền phù hợp và hợp lệ