2013-07-04 22 views
7

Từ hướng dẫn sử dụng Linux: sắp xếp thông qua khóa; KEYDEF cung cấp vị trí và loại.Tham số k làm gì trong hàm sắp xếp (Linux Bash Scripting)?

Tôi không có ý tưởng điều đó có nghĩa nhưng tôi thấy nó đang được sử dụng như thế này:

cut -f 2 *ptt | tail -n +4 | sort | uniq -c | sort -k1 -rn 

Và sau đó một lần nữa như thế này:

ls -1 *\.flv | sort -n -k1.2 

Trả lời

13

KEYDEF là F [.C] [ OPTS] [, F [.C] [OPTS]] cho vị trí bắt đầu và dừng, trong đó F là số trường và C là vị trí ký tự trong trường; cả hai đều có nguồn gốc 1 và vị trí dừng mặc định là kết thúc của dòng. Nếu không phải -t hoặc -b là có hiệu lực, các ký tự trong một trường được tính từ đầu của khoảng trắng trước đó. OPTS là một hoặc nhiều tùy chọn đặt hàng một chữ cái [bdfgiMhnRrV], ghi đè tùy chọn đặt hàng toàn cầu cho khóa đó. Nếu không có khóa nào, hãy sử dụng toàn bộ dòng làm khóa.

Một ví dụ tập tin đầu vào:

123 233 
214 176 
341 325 

loại trên các lĩnh vực đầu tiên:

sort -t' ' -k1 input 

Cung cấp:

123 233 
214 176 
341 325 

Trường thứ hai:

sort -t' ' -k2 input 

Cung cấp:

214 176 
123 233 
341 325 

thứ hai và chữ số thứ ba của trường đầu tiên:

sort -t' ' -k1.2 input 

Cung cấp:

214 176 
123 233 
341 325 

đào cuối nó trong những lĩnh vực thứ hai:

sort -t' ' -k2.3 input 

Cung cấp:

123 233 
341 325 
214 176 
7

Nói cách ít hơn trang hướng dẫn: nó xác định những gì "cột" các tập tin được sắp xếp theo. Nếu số cột chứa một khoảng thời gian, giá trị trong khoảng thời gian được sử dụng như một khoảng bù trong trường. Ví dụ: -k1.2 sắp xếp theo ký tự thứ hai của cột đầu tiên.

Các cột thường được giới hạn bởi các ký tự tab, nhưng bạn có thể thay đổi điều đó bằng -t. Ví dụ: -t, sẽ sử dụng các cột được phân tách bằng dấu phẩy (ví dụ: tệp CSV).

+0

Giá trị mặc định (trong lõi ít ​​nhất là 8.22) là chia các cột dựa trên * khoảng trống *, chứ không phải các tab. –

Các vấn đề liên quan