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.
1. 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.
2. 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.
2.1 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:
- Các dòng bắt đầu bằng ký tự số có mức ưu tiên cao nhất.
- Sau đó, lệnh sẽ sắp xếp các dòng theo thứ tự bảng chữ cái
- 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:
Để sắp xếp tệp bằng cấu hình mặc định:
sort textfile.txt
Đầu ra:
2.2 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:
2.3 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.
>>> Đọc ngay:Cách cài đặt Microsoft Office trên Linux
2.4 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:
2.5 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:
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:
2.6 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:
2.7 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:
2.8 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:
>>> Đọc ngay:Cách bắt đầu sử dụng Linux
2.9 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:
2.10 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:
2.11 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 :
sort -R textfile.txt
Đầu ra:
2.12 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:
2.13 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:
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:
2.14 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 :
Để sắp xếp tệp và xóa dữ liệu lặp lại:
sort -u duplicate.txt
Đầ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.
Bình luận (0
)