Sejajarkan kolom dalam file ASCII


12

Saya memiliki file teks yang terlihat seperti miliknya:

#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

yaitu: tidak disejajarkan pada garis acak tertentu (panjang file ~ 10.000 baris) Saya perlu terlihat seperti ini:

#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

Jadi pada dasarnya saya sedang mencari utilitas script / command line untuk secara otomatis menyelaraskan kolom file.

Jawaban:


12

Coba lakukan ini di :

Untuk menguji STDOUT:

column -t file.txt

Untuk memodifikasi file:

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

Seperti yang Anda lihat, itu saja yang Anda butuhkan. Ini menghemat banyak waktu Anda bermain dengan printftrik yang rumit .


Perintah ini tidak melakukan apa-apa, itu hanya menampilkan file di terminal dan berakhir. Apa yang kulewatkan di sini?
Gabriel

OS apa yang Anda gunakan? (letakkan di POST asli Anda)
Gilles Quenot

Saya menggunakan Ubuntu 12.10.
Gabriel

Coba saja lagi, tidak ada. Haruskah perintah itu memodifikasi file asli atau membuat yang baru selaras?
Gabriel

Lihat edit saya untuk mengedit file inplace (versi saya sebelumnya hanya untuk ditampilkan di terminal)
Gilles Quenot

3

Anda mencari alat kolom bernama tepat.

Untuk apa yang Anda inginkan, Anda harus menyalurkan data Anda ke kolom seperti ini

cat yourfile | column -s " " -t

Tentukan pembatas dengan -s

-s " "

Beri tahu colume untuk membuat tabel dengan -t


Apa artinya ini "some data\nfoo bar"?
Gabriel

Bukan itu yang ditanyakan OP;)
Gilles Quenot

@sputnick, saya memperbaikinya. maaf
Silverrocker
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.