Tôi có tập tin này:Làm thế nào để sắp xếp các nhóm đường thẳng với nhau?
rs1 1 ADD 0.7 0.75 0.45
rs1 1 VAR 0.4 4.53 0.06
rs1 1 USER NA 1.96 0.37
rs2 2 ADD 1.5 0.25 0.23
rs2 2 VAR 0.4 4.86 0.03
rs2 2 USER NA 1.73 0.05
rs3 3 ADD 0.29 0.76 0.97
rs3 3 VAR 0.44 3.95 0.09
rs3 3 USER 0.96 5.41 0.01
Đối với mỗi giá trị trong $1
, có ba dòng với ADD
, VAR
, USER
trong $3
. Tôi muốn sắp xếp (sắp xếp ngược lại) tệp dựa trên các giá trị $6
cho các dòng có USER
trong $3
. Câu hỏi đặt ra là làm thế nào tôi có thể làm điều này và đồng thời giữ các dòng tương ứng với ADD
, VAR
bên cạnh các dòng được sắp xếp. Tôi không cần hai dòng khác được sắp xếp; Tôi chỉ cần họ ở bên cạnh đường dây sorted
.
đầu ra mong muốn:
rs3 3 ADD 0.29 0.76 0.97
rs3 3 VAR 0.44 3.95 0.09
rs3 3 USER 0.96 5.41 0.01
rs2 2 ADD 1.5 0.25 0.23
rs2 2 VAR 0.4 4.86 0.03
rs2 2 USER NA 1.73 0.05
rs1 1 ADD 0.7 0.75 0.45
rs1 1 VAR 0.4 4.53 0.06
rs1 1 USER NA 1.96 0.37
Tôi đã thử mã này, nhưng nó chỉ loại dựa trên $6
giá trị trong USER
dòng:
cat File | sort -k1 | uniq | sort -g -k6 > Output
Cảm ơn bạn
+1 cho câu hỏi được định dạng tốt với dữ liệu mẫu, đầu ra bắt buộc và ... mã mẫu, .... mẫu mã; -). Bạn có thể chỉ định nhiều phím để sắp xếp. '-k2 -k3 -k6' có thể hoạt động. Chúc may mắn. – shellter
Hãy xem ví dụ này nó nằm dọc theo cùng một dòng mà tôi tin rằng http://stackoverflow.com/questions/3832068/bash-sort-text-file-by-last-field-value – TopGunCoder
@shelter: Thật không may, nó dường như không hoạt động – user2162153