2011-12-28 52 views
8

tôi có một danh sách các nghị quyết (các thiết bị di động, màn hình vv ...) và tôi muốn sắp xếp chúng theo độ phân giải sử dụng bash/vimloại bash cho độ phân giải

tôi đã (không yêu cầu):

1024 x 480 
96 x 120 
1024 x 600 
100 x 120 
800 x 1280 
64 x 98 
640 x 320 
64 x 128 
640 x 960 
800 x 480 
80 x 120 

sau đó khi tôi làm:

cat file | sort -u 

tôi nhận được:

100 x 120 
1024 x 480 
1024 x 600 
640 x 320 
640 x 960 
64 x 128 
64 x 98 
800 x 1280 
800 x 480 
80 x 120 
96 x 120 

lý do tại sao nó không được sắp xếp như thế này và làm thế nào tôi có thể làm điều đó?

64 x 98 
64 x 128 
80 x 120 
96 x 120 
100 x 120 
640 x 320 
640 x 960 
800 x 1280 
800 x 480 
1024 x 480 
1024 x 600 

Trả lời

16

bạn có thể sử dụng

sort -n -k1 -k3 file 

này loại dựa trên tiền tố số để bạn có được danh sách được sắp xếp theo số đầu tiên

điều này tạo ra

64 x 98 
64 x 128 
80 x 120 
96 x 120 
100 x 120 
640 x 320 
640 x 960 
800 x 480 
800 x 1280 
1024 x 480 
1024 x 600 
+0

Tại sao '-u'? Điều đó sẽ làm giảm một số mục nhập. – Telemachus

+0

bạn đúng, sửa chữa – MahdeTo

+0

cảm ơn bạn rất nhiều – aki

1
sort -n -k1 -k3 file 
  • -n là để buộc số sắp xếp
  • -k đang nói với nó để sắp xếp bằng cách sử dụng một phần đầu tiên sau đó phần thứ ba của chuỗi
  • tập tin là tên của tập tin. Không có lý do gì để sử dụng cat. Việc sử dụng là:

    loại [OPTION] ... [FILE] ...

man sort

+0

xin lỗi tôi vẫn thấy: 64 x 128, 64 x 98 – aki

+0

@gpojd: bạn đánh giá sai cách '-k' được cho là hoạt động. Quoth trang người đàn ông bạn liên kết: "bắt đầu một chìa khóa tại POS1, kết thúc nó tại POS2". Tôi nghĩ rằng nếu anh ta muốn phân loại trên cả hai lĩnh vực, anh ta sẽ cần một cái gì đó hơi cao cấp hơn, giống như 'awk'. –

+0

kiểm tra câu trả lời của tôi về hành vi @DanFego – MahdeTo

0

tại sao không sử dụng một cái gì đó tương tự (phần quan trọng ở đây là những loại arguments):

xrandr -q | grep " " | awk '{ print $1 }' | sort --unique --field-separator "x" -h 
Các vấn đề liên quan