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

यानी: कुछ रैंडम लाइनों पर संरेखित नहीं किया गया (फ़ाइल ~ 10000 लाइनों लंबी है) मुझे इस तरह दिखने की आवश्यकता है:

#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चाल के साथ खेलने में आपका बहुत समय बचाता है ।


इस कमांड ने कुछ नहीं किया, इसने केवल फाइल को टर्मिनल में प्रदर्शित किया और समाप्त हो गया। मुझे यहां क्या समझ नहीं आ रहा है?
— गैब्रियल

आप किस OS का उपयोग कर रहे हैं? (इसे अपने मूल POST में
— डालें

मैं Ubuntu 12.10 का उपयोग कर रहा हूँ।
— गैब्रियल

बस फिर से कोशिश की, कुछ नहीं। क्या वह आदेश मूल फ़ाइल को संशोधित कर रहा है या एक नया संरेखित करना चाहिए?
— गैब्रियल

फ़ाइल को संपादित करने के लिए मेरा संपादन देखें (मेरा पिछला संस्करण टर्मिनल में प्रदर्शित होना था)
— Gilles Quenot

3

आप उपयुक्त रूप से नामित कॉलम टूल की तलाश कर रहे हैं।

आप जो चाहते हैं, उसके लिए आपको अपने डेटा को इस तरह से कॉलम करना होगा

cat yourfile | column -s " " -t

सीम के साथ सीमांकक को परिभाषित करें

-s " "

बताओ कि -t के साथ एक तालिका बनाने के लिए


इसका क्या "some data\nfoo bar"मतलब है?
— गैब्रियल

यही नहीं ओपी ने पूछा;)
— गाइल्स क्नोट

@sputnick, मैंने इसे ठीक किया। क्षमा करें
— सिल्वरक्रोकर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.