จัดแนวคอลัมน์ในไฟล์ ASCII


12

ฉันมีไฟล์ข้อความที่ดูเหมือนเขา:

#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

เช่น: ไม่จัดชิดที่บรรทัดสุ่มบางอย่าง (ไฟล์มีความยาว ~ 10,000 บรรทัด) ฉันต้องการให้มีลักษณะเช่นนี้:

#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

โดยพื้นฐานแล้วฉันกำลังมองหายูทิลิตี้สคริปต์ / บรรทัดคำสั่งเพื่อจัดเรียงคอลัมน์ของไฟล์โดยอัตโนมัติ

คำตอบ:


12

ลองทำสิ่งนี้ใน :

วิธีทดสอบSTDOUT:

column -t file.txt

ในการแก้ไขไฟล์:

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

อย่างที่คุณเห็นนั่นคือทั้งหมดที่คุณต้องการ มันช่วยให้คุณประหยัดเวลาในการเล่นกับprintfลูกเล่นที่ซับซ้อน


คำสั่งนี้ไม่ทำอะไรเลยมันแค่แสดงไฟล์ในเทอร์มินัลและสิ้นสุด ฉันหายไปนี่อะไร
Gabriel

คุณใช้ระบบปฏิบัติการใดอยู่ (ใส่ไว้ในโพสต์ต้นฉบับของคุณ)
Gilles Quenot

ฉันใช้ Ubuntu 12.10
Gabriel

ลองอีกครั้งไม่มีอะไร คำสั่งนั้นควรจะแก้ไขไฟล์ต้นฉบับหรือสร้างไฟล์ที่จัดเรียงใหม่หรือไม่?
กาเบรียล

ดูการแก้ไขของฉันเพื่อแก้ไขไฟล์ในตำแหน่ง (เวอร์ชันก่อนหน้าของฉันแสดงในเทอร์มินัล)
Gilles Quenot

3

คุณกำลังมองหาเครื่องมือคอลัมน์ชื่อ aptly

สำหรับสิ่งที่คุณต้องการคุณต้องไพพ์ข้อมูลของคุณไปยังคอลัมน์เช่นนี้

cat yourfile | column -s " " -t

กำหนดตัวคั่นด้วย -s

-s " "

บอก colume เพื่อสร้างตารางด้วย -t


สิ่งนี้"some data\nfoo bar"หมายความว่าอย่างไร
Gabriel

นั่นไม่ใช่สิ่งที่ OP ถาม;)
Gilles Quenot

@ sputnick ฉันแก้ไขมัน ขอโทษ
Silverrocker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.