Tôi đã cố gắng một cách tuyệt vọng để sử dụng lệnh sort
, để sắp xếp một hỗn hợp ra các giá trị khoa học và nổi mà là cả tích cực và tiêu cực, ví dụ:Sắp xếp khoa học và nổi
-2.0e+00
2.0e+01
2.0e+02
-3.0e-02
3.0e-03
3.0e-02
Nếu không có dấu chấm động hoặc không có số mũ khoa học, nó hoạt động tốt với sort -k1 -g file.dat
. Sử dụng cả hai cùng một lúc như đã nêu trước đó, nó kết quả trong:
-3.0e-02
-2.0e+00
2.0e+01
2.0e+02
3.0e-02
3.0e-03
Đây là rõ ràng là sai vì nó nên là:
-2.0e+00
-3.0e-02
3.0e-03
3.0e-02
...
Bất kỳ ý tưởng làm thế nào tôi có thể giải quyết vấn đề này? Và khi tôi giải quyết vấn đề này, liệu có khả năng nào để sắp xếp giá trị tuyệt đối (ví dụ: loại bỏ các giá trị âm)? Tôi biết tôi có thể cố gắng để vuông mỗi giá trị, sắp xếp, lấy căn bậc hai. Làm điều này tôi sẽ ít chính xác hơn và nó sẽ gọn gàng để có một cách tốt đẹp, nhanh chóng và đơn giản.
Hệ thống linux của tôi: 8.12, Bản quyền © 2011
Cảm ơn bạn rất nhiều!
UPDATE: nếu tôi chạy nó trong chế độ gỡ lỗi sort -k1 -g filename.dat --debug
tôi nhận được kết quả như sau (tôi dịch nó sang tiếng Anh, sản lượng đã được Đức)
sort: the sorting rules for „de_DE.UTF-8" are used
sort: key 1 is numerically and involves several fields
-3.0e-02
__
________
-2.0e+00
__
________
2.0e+01
_
_______
2.0e+02
_
_______
3.0e-02
_
_______
3.0e-03
_
_______
không phải là "sai". nó chỉ phân loại thành một chuỗi. '-n' có thể giúp, mặc dù tôi không biết nếu nó sẽ xử lý các giá trị float. –
@MarcB: Lưu ý rằng anh * bằng * sử dụng phân loại số ('-g') để bắt đầu. – DevSolar
yep, [-n] cũng không tạo ra kết quả chính xác, đã thử kết quả trước – Jan