Căn chỉnh các cột trong tệp ASCII


12

Tôi có một tập tin văn bản trông giống như của anh ấy:

#c1     c2              c3              c4              c5              c6      c7      c8      c9      c10     c11     c12     c13
4599    995,274 2523,658        264,1417170     -33,6000        -0,3600 0,0202  0,0069  0,0227  10,1041 0,0169  0,2817  0,0239
6173    1552,290        1595,696        264,0603912     -33,4880        0,4374  0,0287  1,8123  0,0385  10,1289 0,0292  2,8445  0,0366
6456    1658,630        1529,292        264,0449377     -33,4800        0,0109  0,0234  1,0955  0,0296  10,5032 0,0223  1,7168  0,0293
8932    2750,029        1374,395        263,8866195     -33,4615        -0,3185 0,0249  0,9196  0,0302  10,5858 0,0221  1,3886  0,0296
4095    820,716 495,315 264,1658451     -33,3546        -0,4388 0,0216  0,6497  0,0252  10,6026 0,0188  1,1796  0,0258
4737    1045,289        1395,983        264,1338240     -33,4636        0,5900  0,0231  0,8853  0,0273  10,6501 0,0204  1,1661  0,0270

tức là: không được căn chỉnh tại một số dòng ngẫu nhiên nhất định (tệp dài ~ 10000 dòng) Tôi cần nó để trông như thế này:

#c1     c2              c3              c4              c5              c6      c7      c8      c9      c10     c11     c12     c13
4599    995,274         2523,658        264,1417170     -33,6000        -0,3600 0,0202  0,0069  0,0227  10,1041 0,0169  0,2817  0,0239
6173    1552,290        1595,696        264,0603912     -33,4880        0,4374  0,0287  1,8123  0,0385  10,1289 0,0292  2,8445  0,0366
6456    1658,630        1529,292        264,0449377     -33,4800        0,0109  0,0234  1,0955  0,0296  10,5032 0,0223  1,7168  0,0293
8932    2750,029        1374,395        263,8866195     -33,4615        -0,3185 0,0249  0,9196  0,0302  10,5858 0,0221  1,3886  0,0296
4095    820,716         495,315         264,1658451     -33,3546        -0,4388 0,0216  0,6497  0,0252  10,6026 0,0188  1,1796  0,0258
4737    1045,289        1395,983        264,1338240     -33,4636        0,5900  0,0231  0,8853  0,0273  10,6501 0,0204  1,1661  0,0270

Vì vậy, về cơ bản tôi đang tìm kiếm một tiện ích dòng lệnh / tập lệnh để tự động căn chỉnh các cột của tệp.

Câu trả lời:


12

Hãy thử làm điều này trong một :

Để kiểm tra trên STDOUT:

column -t file.txt

Để sửa đổi tệp:

column -t file.txt > new_file.txt && mv new_file.txt file.txt

Như bạn có thể thấy, đó là tất cả những gì bạn cần. Nó giúp bạn tiết kiệm rất nhiều thời gian chơi với các printfthủ thuật phức tạp .


Lệnh này không làm gì cả, nó chỉ hiển thị tệp trong thiết bị đầu cuối và kết thúc. Tôi đang thiếu gì ở đây?
Gabriel

Bạn đang sử dụng hệ điều hành nào? (đặt nó trong POST gốc của bạn)
Gilles Quenot

Tôi đang sử dụng Ubuntu 12.10.
Gabriel

Chỉ cần thử lại, không có gì. Lệnh đó có nên sửa đổi tệp gốc hoặc tạo tệp mới được căn chỉnh không?
Gabriel

Xem chỉnh sửa của tôi để chỉnh sửa tệp tại chỗ (phiên bản trước của tôi chỉ để hiển thị trong một thiết bị đầu cuối)
Gilles Quenot

3

Bạn đang tìm kiếm công cụ cột có tên thích hợp.

Đối với những gì bạn muốn, bạn phải chuyển dữ liệu của mình sang cột như thế này

cat yourfile | column -s " " -t

Xác định dấu phân cách với -s

-s " "

Nói với colume để tạo một bảng với -t


Điều này "some data\nfoo bar"có nghĩa là gì?
Gabriel

Đó không phải là những gì OP yêu cầu;)
Gilles Quenot

@sputnick, tôi đã sửa nó. xin lỗi
Silverrocker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.