2009-07-07 39 views
5


Tôi có một tệp có nhiều cột, cách nhau khoảng trắng. ví dụ:Cách sắp xếp nội dung của một tệp tại chỗ theo một cột?

 
data1    data2   data3    data4 
val1    val2   val3     val4 

tôi cần phải sắp xếp các tập tin dựa trên các giá trị trong các cột khác nhau, tức là đôi khi dựa trên giá trị của cột 1 đôi khi dựa trên giá trị của col2 và vân vân.

Tôi đã nghĩ về lệnh sắp xếp nhưng không thể tìm ra cách sử dụng nó để thực hiện việc này.

Thanx,

+0

Vì vậy, bạn muốn tìm lệnh Unix đúng hay để làm điều đó theo chương trình trong, nói C ? – anderstornvig

Trả lời

10

Thật dễ dàng nếu bạn bỏ vào sắp xếp tại chỗ:

sort -k 1 original > by_col_1 
sort -k 2 original > by_col_2 
+0

thanx ,,, nó là tùy chọn -k .. một điều nữa nó có thể làm việc với phân cách cột khác hơn không gian .. – sud03r

+1

Có, sử dụng tùy chọn -t. Bạn nên kiểm tra * người đàn ông sắp xếp *. –

2

Sắp xếp đã được xây dựng trong sự hiểu biết về "chìa khóa", mà là một phần của dòng được sử dụng để so sánh. Theo mặc định, chính là toàn bộ dòng, nhưng điều này có thể được thay đổi bằng cách sử dụng tùy chọn -k:

Ví dụ: Để sắp xếp trên các lĩnh vực thứ hai, sử dụng --key=2,2' ( -k 2,2').

Theo mặc định, các khóa được phân tách bằng cách chuyển đổi giữa các ký tự trống và không trống.

0

Để sắp xếp tập tin tại chỗ, hãy thử vim chiều:

$ ex -s +'%!sort -k1' -cxa file.txt 

Hoặc sử dụng -o tham số như sort -k1 in.txt -o out.txt

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