7 Ví dụ sort command thú vị trong Linux – Phần 2

Trong bài viết trước, chúng ta đã bao quát các ví dụ về lệnh sort. Trong bài viết này, chúng ta sẽ tiếp tục từ nơi chúng ta dừng lại ở bài viết trước, để bàn về những khía cạnh còn lại của lệnh. Cả hai bài viết này sẽ cùng nhau làm hướng dẫn toàn diện về sort command trên Linux.

Trước khi chúng ta tiếp tục, hãy tạo một tệp văn bản có tên ‘month.txt‘ và điền dữ liệu được cung cấp dưới đây vào tệp.

echo -e "mar\ndec\noct\nsep\nfeb\naug" > month.txt
cat month.txt

15. Sắp xếp nội dung tệp theo tháng

Lệnh sau sắp xếp nội dung của tệp “month.txt” theo thứ tự thời gian dựa vào viết tắt hoặc tên tháng bằng cách sử dụng tùy chọn '-M' để chỉ dẫn lệnh ‘sort‘ xử lý dữ liệu như là ngày và sắp xếp dựa trên điều đó.

sort -M month.txt

16. Sắp xếp đầu ra theo kích thước tệp theo định dạng dễ đọc cho con người

Lệnh sau kết hợp lệnh ‘ls‘ và lệnh ‘sort‘ để thực hiện hai tác vụ. Trước tiên, nó liệt kê nội dung của thư mục người dùng theo định dạng dài, sau đó, nó chuyển dữ liệu này của thư mục này đến lệnh ‘sort’ để in kích thước tệp trong định dạng dễ đọc cho con người, giúp dễ dàng xác định các tệp lớn nhất và nhỏ nhất trong thư mục.

ls -l /home/$USER | sort -h -k5

17. Kiểm tra tính nhất quán của tệp đã sắp xếp

Trong bài viết trước, chúng ta đã tạo ra hai tệp văn bản: ‘sorted.txt‘ trong ví dụ số 4 và ‘lsl.txt‘ trong ví dụ số 6. Chúng ta đã biết rằng ‘sorted.txt‘ đã được sắp xếp, trong khi ‘lsl.txt‘ chưa được sắp xếp.

Để xác nhận trạng thái sắp xếp của cả hai tệp, chúng ta sẽ sử dụng lệnh ‘sort’, cho phép chúng ta xác nhận xem tệp ‘sorted.txt’ có giữ nguyên thứ tự chính xác không và liệu ‘lsl.txt’ có cần sắp xếp hay không.

sort -c sorted.txt

Nếu trả về 0, có nghĩa là tệp đã được sắp xếp và không có xung đột.

sort -c lsl.txt

18. Xử lý các ký tự phân cách khi không sử dụng khoảng trắng trong tệp

Nếu ký tự phân cách (ngăn cách) giữa các từ là một khoảng trắng, lệnh ‘sort‘ tự động hiểu bất kỳ thứ gì sau khoảng trắng ngang là một từ mới. Nhưng thì chỉ có thế nào khi ký tự phân cách không phải là khoảng trắng?

Hãy xem xét một tệp văn bản, nội dung trong đó được phân cách bằng bất kỳ ký tự nào, ngoại trừ khoảng trắng như '|' hoặc '\' hoặc '+' hoặc '.' hoặc ...

Tạo một tệp văn bản trong đó nội dung được phân cách bằng +. Sử dụng lệnh cat để kiểm tra nội dung của tệp.

echo -e "21+linux+server+production\n11+debian+RedHat+CentOS\n131+Apache+Mysql+PHP\n7+Shell Scripting+python+perl\n111+postfix+exim+sendmail" > delimiter.txt
$ cat delimiter.txt

Check File Content by Delimiter

Bây giờ sắp xếp tệp này dựa trên 1nbsp cột, đây là số.

sort -t '+' -nk1 delimiter.txt

Cột thứ hai dựa trên 4 cột, đây là số không phải là số.

Nếu dấu phân cách là Tab bạn có thể sử dụng $'\t' thay cho '+', như đã được thể hiện trong ví dụ trên.

19. Sắp xếp ngẫu nhiên đầu ra dựa trên kích thước tệp

Sắp xếp đầu ra của lệnh ls -l đối với thư mục home của bạn dựa trên cột thứ năm, đại diện cho ‘số lượng dữ liệu’, theo thứ tự ngẫu nhiên.

ls -l /home/avi/ | sort -k5 -R 

Mỗi lần bạn chạy đoạn script trên, bạn có thể nhận được kết quả khác nhau vì kết quả được tạo ra ngẫu nhiên.

Rõ ràng từ Quy tắc số – 2 trong bài viết trước, lệnh sort ưu tiên các dòng bắt đầu bằng ký tự viết thường hơn các ký tự viết hoa. Hãy xem ví dụ 3 ở bài viết trước, trong đó chuỗi ‘laptop’ xuất hiện trước chuỗi ‘LAPTOP’.

20. Ghi đè lên Sở thích Sắp xếp Mặc định

Làm thế nào để ghi đè sở thích sắp xếp mặc định? Trước khi chúng ta có thể ghi đè sở thích sắp xếp mặc định, chúng ta cần xuất biến môi trường 'LC_ALL' đến 'C'.

Để làm điều này, chạy đoạn mã dưới đây trong cửa sổ dòng lệnh của bạn.

export LC_ALL=C

Và sau đó sắp xếp tệp văn bản ‘tecmint.txt’ ghi đè lên sở thích sắp xếp mặc định.

$ sort tecmint.txt

Đừng quên so sánh đầu ra với kết quả bạn đạt được ở ví dụ 3 và bạn cũng có thể sử dụng tùy chọn ‘-f’ tương đương ‘--ignore-case’ để có đầu ra được tổ chức tốt hơn.

$ sort -f tecmint.txt

21. Kết hợp Hai Tệp Đầu vào trong Một Thao tác

Làm thế nào về chạy ‘sort’ trên hai tệp đầu vào và kết hợp chúng trong một lần chạy?

Hãy tạo hai tệp văn bản, tên lần lượt là ‘file1.txt’ và ‘file2.txt’, và điền vào chúng một số dữ liệu. Trong ‘file1.txt’, chúng ta sẽ thêm số như dưới đây. Chúng ta cũng sử dụng lệnh cat để kiểm tra nội dung của tệp

echo -e “5 Reliable\n2 Fast\n3 Secure\n1 open-source\n4 customizable” > file1.txt
cat file1.txt

Và điền dữ liệu vào tệp thứ hai ‘file2.txt’.

echo -e “3 RedHat\n1 Debian\n5 Ubuntu\n2 Kali\n4 Fedora” > file2.txt
cat file2.txt

Bây giờ sắp xếp và kết hợp đầu ra của cả hai tệp.

join <(sort -n file1.txt) <(sort file2.txt)

Nhìn chung, bài viết này đã khám phá các khía cạnh khác nhau của sort command trên Linux. Chúng ta đã bắt đầu với việc sắp xếp cơ bản theo thứ tự chữ cái, tiếp tục vào sắp xếp theo số và theo ngày, và thậm chí còn đề cập đến các định dạng ngăn cách tùy chỉnh. Chúng ta cũng đã tìm hiểu cách ghi đè sở thích sắp xếp mặc định để phù hợp với nhu cầu của chúng ta.

Hơn nữa, chúng ta đã thảo luận về các kỹ thuật kiểm tra xem một tệp đã được sắp xếp hay chưa và kết hợp các thao tác ‘sort‘ cho nhiều tệp đầu vào. Với kiến thức thu được ở đây, bạn đã có một công cụ mạnh mẽ để sắp xếp và tổ chức dữ liệu một cách hiệu quả trong môi trường Linux.