Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Mẹo nhỏ với câu lệnh sort
Câu lệnh sort
Câu lệnh sort
trên Unix có lựa chọn -k
rất thú vị. -k
cho phép chỉ định khoá sắp xếp: tức là ta muốn khoá sắp xếp là từ ký tự thứ bao nhiêu đến ký tự thứ bao nhiêu
-k, --key=POS1[,POS2]
start a key at POS1 (origin 1), end it at POS2 (default end of line)
Áp dụng linh hoạt lựa chọn này cho phép giải quyết khá nhiều vấn đề một cách rất nhanh chóng.
Ví dụ
Mình chạy chương trình copy file thì có danh sách các file bị lỗi được ghi ra log như sau:
/dir1/dir2/130501/filename1
/dir1/dir2/130205/filename3
/dir1/dir2/130320/filename5
/dir1/dir2/130610/filename7
/dir1/dir2/131201/filename3
/dir1/dir2/130921/filename2
/dir1/dir2/130803/filename8
....
Do bản chất chương trình là copy file song song nên thứ tự thời gian các file là không thống nhất. Bây giờ mình muồn sắp xếp lại danh sách này theo thời gian để biết ngày nào bị lỗi vì sao.
Cách giải: Dùng lựa chọn -k
để chỉ định vị trí bắt đầu của key. Để lấy được vị trí này một cách nhanh nhất ta có thể dùng python như sau:
$ python
>>> len("/dir1/dir2/")
11
>>>
Ctrl + D
$ cat logfile | sort -nk 12
/dir1/dir2/130205/filename3
/dir1/dir2/130320/filename5
/dir1/dir2/130501/filename1
/dir1/dir2/130610/filename7
/dir1/dir2/130803/filename8
/dir1/dir2/130921/filename2
/dir1/dir2/131201/filename3
Các file được sắp xếp theo thứ tự ngày tháng!
Tham khảo
$ man sort






