Cách sắp xếp tệp văn bản trong Linux bằng lệnh sort

Chia sẻ kiến thức 10/03/2022

Nếu bạn muốn sắp xếp nội dung của các tệp văn bản một cách nhanh chóng trong Linux, chỉ cần sử dụng lệnh sort.


Linux cung cấp cho bạn một số tiện ích để xử lý các tệp văn bản. Cho dù bạn muốn xóa dữ liệu trùng lặp hay sắp xếp nội dung bên trong tệp, công cụ dòng lệnh (command line) của Linux đều có mọi thứ bạn cần.

Bài viết này sẽ trình bày về lệnh sort và cách bạn có thể sử dụng lệnh này để sắp xếp nội dung bên trong tệp văn bản.

Lệnh sort là gì?

Lệnh sort giúp người dùng sắp xếp nội dung của tệp văn bản theo một thứ tự nhất định. Lệnh này có thể sắp xếp một tệp văn bản theo thứ tự bảng chữ cái, số, theo cột và hơn thế nữa, theo thứ tự bình thường hoặc ngược lại.

Các chức năng khác của lệnh bao gồm bỏ qua các chữ cái viết hoa/viết thường trong khi sắp xếp, sắp xếp tệp theo tháng, bỏ qua khoảng trống trong tệp và sắp xếp ngẫu nhiên. Bạn cũng có thể sử dụng lệnh này để kiểm tra xem tệp đã được sắp xếp hay chưa.

Cách sử dụng lệnh sort trong Linux

Lệnh sort có chứa một số phương pháp (method) và cờ (flag) mà bạn có thể sử dụng, nhưng nó vẫn rất dễ học.

Cú pháp cơ bản

Cú pháp cơ bản của lệnh này là: 

sort filename

… trong đó filename là đường dẫn tuyệt đối (absolute path) hoặc tương đối (relative path) của tệp văn bản mà bạn muốn sắp xếp.

Theo mặc định, sort sẽ sắp xếp nội dung theo các tiêu chí sau:

  1. Các dòng bắt đầu bằng ký tự số có mức ưu tiên cao nhất.
  2. Sau đó, lệnh sẽ sắp xếp các dòng theo thứ tự bảng chữ cái
  3. Các dòng bắt đầu bằng ký tự thường đứng trước các dòng bắt đầu bằng cùng một ký tự đó nhưng viết hoa.

Hãy xem xét một tệp văn bản có tên là textfile.txt chứa các thông tin sau:

xem tệp văn bản linux

Để sắp xếp tệp bằng cấu hình mặc định:

sort textfile.txt

Đầu ra:

sắp xếp tệp văn bản bằng cách sử dụng sắp xếp

Tạo tệp đầu ra mới

Lệnh sort không sửa đổi mà chỉ sắp xếp lại nội dung của tệp. Tuy nhiên, điều này không có nghĩa là nó không thể tạo tệp mới. Bạn có thể sử dụng cờ -o để chỉ định tên của tệp đã sắp xếp và lệnh này sẽ tự động tạo tệp cho bạn và thêm nội dung.

sort -o sortedfile filename

… trong đó sortedfile là tên của tệp đầu ra và filename là tệp gốc cần sắp xếp.

Để sắp xếp textfile.txt và tạo một tệp đầu ra mới cho nội dung:

sort -o sorted.txt textfile.txt

Đầu ra:

gửi đầu ra cho một tệp mới

Sắp xếp nhiều tệp

Để sắp xếp nhiều tệp cùng một lúc, chỉ cần chuyển các tên tệp được phân tách bằng ký tự Dấu cách.

sort textfile.txt textfile2.txt

Đầu ra:

Lưu ý rằng lệnh sort sẽ hợp nhất đầu ra của các tệp và hiển thị chúng cùng nhau trong terminal. 

Sắp xếp ngược một tệp

Nếu bạn muốn đảo ngược sự sắp xếp của nội dung, hãy sử dụng cờ -r với lệnh mặc định. -R trong lệnh sau là viết tắt của Reverse (đảo ngược).

sort -r textfile.txt

Đầu ra:

sắp xếp các tập tin theo thứ tự ngược lại

Sắp xếp tệp theo số

Để sắp xếp tệp chứa dữ liệu số, hãy sử dụng cờ -n với lệnh. Theo mặc định, sort sẽ sắp xếp dữ liệu theo thứ tự tăng dần.

sort -n numbers.txt

Đầu ra:

phân loại tệp với các số trong linux

Nếu bạn muốn sắp xếp theo thứ tự giảm dần, hãy đảo ngược sự sắp xếp bằng cách sử dụng tùy chọn -r cùng với cờ -n trong lệnh.

sort -rn numbers.txt

Đầu ra:

sắp xếp ngược một tệp với các số

Bỏ qua ký tự viết hoa/viết thường trong khi sắp xếp

Theo mặc định, sắp xếp có tính đến sự viết hoa/viết thường của các chữ. Các dòng bắt đầu bằng ký tự thường đứng trước các dòng bắt đầu bằng phiên bản viết hoa của cùng một ký tự. Ví dụ, “he is a boy” sẽ đứng trước “He is a boy”.

Nếu bạn muốn sắp xếp bỏ qua sự viết hoa/viết thường của các chữ, hãy chỉ định -f hoặc cờ –ignore-case như sau:

sort -f textfile.txt
sort --ignore-case textfile.txt

Đầu ra:

phân loại tệp trong Linux

Sắp xếp tệp dựa trên tháng

Sử dụng cờ -M , bạn có thể sửa đổi thứ tự nội dung của tệp dựa trên tên tháng.

sort -M textfile2.txt

Đầu ra:

sắp xếp tệp dựa trên tên tháng

Bỏ qua khoảng trống hàng đầu

Đôi khi, tệp bạn muốn sắp xếp có thể chứa khoảng trắng hoặc tab. Để bỏ qua các ký tự trống như vậy, hãy sử dụng cờ -b .

sort -b fileblanks.txt

Đầu ra:

bỏ qua khoảng trống trong khi sắp xếp trong linux

Sắp xếp tệp theo cột

Nếu bạn có một tệp văn bản với dữ liệu được sắp xếp trong các cột riêng biệt, bạn có thể sắp xếp tệp theo nội dung của một cột. Tất cả những gì bạn cần làm là gõ số cột cùng với cờ -k .

Hãy xem xét một tệp văn bản chứa các cột khác nhau. Để sắp xếp tệp có tên output.txt theo cột thứ tám:

sort -k8 -rn output.txt

Đầu ra:

sắp xếp theo giá trị cột

Pipe lệnh sort với các lệnh khác

Bạn thậm chí có thể sử dụng lệnh sắp xếp với các lệnh Linux khác để sửa đổi cách sắp xếp của đầu ra. Ví dụ, để sắp xếp đầu ra của lệnh ls theo kích thước của tệp:

ls -la | sort -k5 -rn

Đầu ra:

sắp xếp đường ống với các lệnh khác

Sắp xếp tệp một cách ngẫu nhiên

Bạn có thể sử dụng cờ -R nếu bạn muốn sắp xếp thứ tự của các dòng trong tệp văn bản một cách ngẫu nhiên. Hãy xem xét tệp textfile.txt :

xem tệp văn bản bằng cách sử dụng mèo
sort -R textfile.txt

Đầu ra:

sắp xếp các tập tin một cách ngẫu nhiên

Sắp xếp số phiên bản trong tệp

Nếu bạn có một tệp văn bản chứa thông tin phiên bản được liên kết với một gói, bạn có thể sắp xếp nội dung của nó bằng cách sử dụng cờ -V hoặc –version-sort .

sort -V version.txt
sort --version-sort version.txt

Đầu ra:

sắp xếp dữ liệu phiên bản với sắp xếp

Kiểm tra xem tệp có được sắp xếp hay không

Cờ -c sẽ giúp bạn xác định các tệp đã được sắp xếp theo các tùy chọn được chỉ định. Nếu nội dung của tệp được sắp xếp đúng cách, lệnh sẽ không hiển thị bất kỳ đầu ra nào.

Để kiểm tra xem tệp textfile.txt có được sắp xếp hay không:

sort -c textfile.txt

Bây giờ, hãy sắp xếp tệp và lưu đầu ra của nó vào một tệp mới có tên là sorted.txt. Khi phát hành lệnh sau:

sort -c sorted.txt

Đầu ra:

kiểm tra các tệp có sắp xếp trong linux

Bạn cũng có thể chỉ định các cờ khác nhau để kiểm tra sự sắp xếp của tệp theo các tiêu chí cụ thể. Ví dụ: để kiểm tra xem tệp numbers.txt có được sắp xếp theo thứ tự giảm dần hay không:

sort -c -rn numbers.txt

Bạn sẽ thấy một đầu ra cho biết rằng tệp không được sắp xếp đúng cách. Hãy sắp xếp tệp và kiểm tra xem tệp mới có được sắp đúng cách hay không.

sort -o sorted.txt -rn numbers.txt
sort -c -rn sorted.txt

Đầu ra:

kiểm tra một tập tin với các con số

Sắp xếp tệp và loại bỏ các tệp trùng lặp

Tệp mà bạn đang làm việc có thể chứa dữ liệu trùng lặp. Mặc dù bạn có thể sử dụng lệnh uniq để xóa thông tin đó khỏi tệp, nhưng sort có thể thực hiện tác vụ này cho bạn. Cờ -u hoặc –unique là những gì bạn cần.

Hãy xem xét một tệp có tên Dupate.txt :

tệp với dữ liệu lặp lại

Để sắp xếp tệp và xóa dữ liệu lặp lại:

sort -u duplicate.txt

Đầu ra:

loại bỏ dữ liệu trùng lặp khỏi đầu ra

Bạn có thể thấy rằng khi bạn sử dụng cờ -u , lệnh chỉ hiển thị các dòng riêng biệt và sắp xếp chúng theo các tiêu chí được chỉ định.

Làm việc với tệp văn bản trong Linux

Mặc dù sức mạnh của trình soạn thảo văn bản dòng lệnh là không thể so sánh được, nhưng bạn vẫn có thể lựa chọn trình chỉnh sửa đồ họa như gedit để sửa đổi nội dung của tệp văn bản một cách dễ dàng. Ngoài ra, nó là một lựa chọn tốt hơn cho những người mới sử dụng Linux và không quen với terminal. 

Cách tốt nhất để bắt đầu với dòng lệnh và Linux nói chung là thực hành các lệnh cơ bản trước. Sau đó dần dần tiến tới các lệnh phức tạp hơn có lẽ là cách tiếp cận tốt nhất.

Dịch từ: https://www.makeuseof.com/how-to-use-sort-in-linux/

Vân Nguyễn

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        

yêu cầu gọi lại

error: Content is protected !!