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.