14 ví dụ về lệnh sort trên Centos / Ubuntu / Debian / Fedora
Sort là một chương trình Linux được sử dụng để in ra các dòng trong các tệp văn bản đầu vào và nối tất cả các tệp lại theo thứ tự đã được sắp xếp. Lệnh sort sử dụng khoảng trắng làm phân tách trường và toàn bộ tệp đầu vào là khóa sắp xếp. Đáng lưu ý rằng lệnh sort không thực sự sắp xếp các tệp mà chỉ in ra đầu ra đã được sắp xếp, cho đến khi bạn chuyển hướng đầu ra. Bài viết này nhằm mục đích cung cấp thông tin sâu hơn về lệnh 'sort' trong Linux thông qua 14 ví dụ thực tế hữu ích sẽ cho bạn thấy cách sử dụng lệnh sort trong Linux.
1. Đầu tiên, chúng ta sẽ tạo một tệp văn bản (tecmint.txt) để thực hiện các ví dụ với lệnh 'sort'. Thư mục làm việc của chúng ta là '/home/$USER/Desktop/tecmint.
Tùy chọn '-e' trong lệnh echo dưới đây cho phép diễn giải ký tự backslash và /n cho biết echo viết mỗi chuỗi vào một dòng mới.
$ echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt
2. Trước khi chúng ta bắt đầu với lệnh 'sort', hãy xem nội dung của tệp và cách nó hiển thị.
$ cat tecmint.txt
Bây giờ, hãy sắp xếp nội dung của tệp bằng lệnh sau.
$ sort tecmint.txt
Lưu ý: Lệnh trên thực tế không sắp xếp nội dung của tệp văn bản mà chỉ hiển thị đầu ra đã được sắp xếp trên màn hình.
4. Sắp xếp nội dung của tệp 'tecmint.txt' và ghi nó vào một tệp có tên là (sorted.txt), sau đó xác minh nội dung bằng cách sử dụng lệnh cat.
$ sort tecmint.txt > sorted.txt $ cat sorted.txt
5. Sắp xếp nội dung của tệp văn bản 'tecmint.txt' theo thứ tự đảo ngược bằng cách sử dụng tùy chọn '-r' và chuyển hướng đầu ra vào tệp 'reversesorted.txt'. Sau đó, kiểm tra nội dung của tệp mới được tạo.
$ sort -r tecmint.txt > reversesorted.txt $ cat reversesorted.txt
6. Chúng ta sẽ tạo một tệp mới (lsl.txt) trong cùng vị trí cho các ví dụ chi tiết và điền vào nó bằng đầu ra của 'ls -l' cho thư mục người dùng của bạn.
$ ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt $ cat lsl.txt
Bây giờ chúng ta sẽ xem các ví dụ để sắp xếp nội dung dựa trên các trường khác nhau và không phải là ký tự ban đầu mặc định.
7. Sắp xếp nội dung của tệp "lsl.txt" dựa trên cột thứ 2 (đại diện cho số liên kết tượng trưng).
$ sort -nk2 lsl.txt
Lưu ý: Tùy chọn ‘-n‘ trong ví dụ trên sắp xếp nội dung theo thứ tự số. Tùy chọn ‘-n‘ phải được sử dụng khi chúng ta muốn sắp xếp một tệp trên cơ sở của một cột chứa giá trị số.
8. Sắp xếp nội dung của tệp 'lsl.txt' dựa trên cột thứ 9 (đó là tên các tệp và thư mục và không phải là số).
$ sort -k9 lsl.txt
9. Không luôn cần thiết phải chạy lệnh sort trên một tệp. Chúng ta có thể dùng đường ống trực tiếp trên giao diện dòng lệnh với lệnh thực tế.
$ ls -l /home/$USER | sort -nk5
10. Sắp xếp và loại bỏ các bản trùng lặp khỏi tệp văn bản tecmint.txt . Kiểm tra xem bản sao đã bị xóa hay chưa.
$ cat tecmint.txt $ sort -u tecmint.txt
Những quy tắc cho đến nay (những gì chúng ta đã quan sát):
- Các dòng bắt đầu bằng số được ưu tiên trong danh sách và nằm ở đầu cho đến khi được chỉ định khác (-r).
- Các dòng bắt đầu bằng chữ thường được ưu tiên trong danh sách và nằm ở đầu cho đến khi được chỉ định khác (-r).
- Nội dung được liệt kê dựa trên sự xuất hiện của các chữ cái trong từ điển cho đến khi được chỉ định khác (-r).
- Lệnh sort mặc định xử lý mỗi dòng như một chuỗi và sau đó sắp xếp nó dựa trên sự xuất hiện của các chữ cái trong từ điển (ưu tiên số; xem quy tắc - 1) cho đến khi được chỉ định khác.
Các quy tắc trên là các quy tắc mặc định của lệnh sort. Tuy nhiên, bạn có thể sử dụng các tùy chọn và cú pháp khác của lệnh sort để tùy chỉnh cách sắp xếp và xử lý các trường và cột trong tệp văn bản.
11. Bạn sẽ tạo một tệp thứ ba có tên là 'lsla.txt' tại vị trí hiện tại và điền nó bằng kết quả của lệnh 'ls -lA'.
$ ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt $ cat lsla.txt
Người hiểu về lệnh 'ls' biết rằng 'ls -lA' tương đương với 'ls -l' + các tệp ẩn. Do đó, hầu hết các nội dung trên hai tệp này sẽ giống nhau.
12. Sắp xếp nội dung của hai tệp trên đầu ra tiêu chuẩn trong một lần.
$ sort lsl.txt lsla.txt
Chú ý sự lặp lại của các tệp và thư mục.
13. Bây giờ bạn có thể xem cách sắp xếp, kết hợp và loại bỏ các bản sao từ hai tệp này.
$ sort -u lsl.txt lsla.txt
Chú ý rằng các bản sao đã được loại bỏ khỏi đầu ra. Bạn cũng có thể ghi đầu ra vào một tệp mới bằng cách chuyển hướng đầu ra sang một tệp.
14. Bạn cũng có thể sắp xếp nội dung của một tệp hoặc đầu ra dựa trên nhiều cột hơn. Hãy sắp xếp đầu ra của lệnh 'ls -l' dựa trên cột 2,5 (số) và 9 (không phải số).
$ ls -l /home/$USER | sort -t "," -nk2,5 -k9
Bên trên chính là 14 ví dụ theo từng bước về lệnh sort mà bạn có thể tham khảo để thao tác trên hệ điều hành Linux. Hãy áp dụng ngay để thấy được kết quả nhé.
Mọi người cũng tìm kiếm: sort ubuntu