टीएसवी (सीएसवी) को कंसोल में कैसे प्रदर्शित किया जाए, जब खाली कोशिकाएं छूट जाती हैं: `कॉलम -t $ -s '\ t'`


12

मेरे पास उन स्तंभों के साथ फ़ाइल है जिनके साथ कटा हुआ है tab

मेरे पास फ़ाइल है जब कुछ पंक्तियों में खाली कोशिकाएँ होती हैं (बीच में, भीख माँगने पर)।

ऐसे मामलों में column -t -s $'\t'बस विफल हो जाता है:

इनपुट:

$ echo -e 'A\tB\tC\tD\n\tb1\t\td1\n\t\t\td2\na3\t\t\td3' > in.tsv
$ hexdump -C in.tsv 
00000000  41 09 42 09 43 09 44 0a  09 62 31 09 09 64 31 0a  |A.B.C.D..b1..d1.|
00000010  09 09 09 64 32 0a 61 33  09 09 09 64 33 0a        |...d2.a3...d3.|
0000001e

कॉलम आउटपुट:

$ cat in.tsv | column -t -s $'\t'
A   B   C  D
b1  d1
d2
a3  d3

के बजाय:

A       B       C       D
        b1              d1
                        d2
a3                      d3

क्या आप सुझाव दे सकते हैं कि TSV कमांड लाइन फॉर्मेटिंग कैसे करें? (यूनिक्स तरीके से, मैं प्रोग्राम के आउटपुट को फॉर्मैटर में पाइप करना चाहता हूं, जैसे column)

"फिक्सिंग" columnदृष्टिकोण का कोई तरीका ? शायद एक और उपकरण?

जवाबों:


12

आप बस डेबियन का उपयोग कर सकते हैं column। यह विकल्प प्रदान करता है -nजो इसे ठीक उसी तरह से काम करता है जैसा आप चाहते हैं।

वैकल्पिक रूप से, आप खाली कॉलम में एक अंतरिक्ष डाल सकते हैं, का उपयोग करते हुए sed:

sed ':x s/\(^\|\t\)\t/\1 \t/; t x' < in.tsv | column -t -s $'\t'

उदाहरण:

$ sed ':x s/\(^\|\t\)\t/\1 \t/; t x' < in.tsv | column -t -s $'\t'
A   B   C  D
    b1     d1
           d2
a3         d3

मुझे डर है कि कैसे sed वैकल्पिक '^ \ _ \ t' के साथ व्यवहार करेंगे ... '^' के कारण परमाणुओं को निर्दिष्ट नहीं कर रहा है। (इसलिए, यह स्थानापन्न करने जा रहा है \1रिक्त स्ट्रिंग के साथ?
Grzegorz Wierzowiecki

हाँ, \(^\)अकेले एक खाली स्ट्रिंग से मेल खाता है, लाइन की शुरुआत के लिए लंगर डाला गया है। \1उस खाली स्ट्रिंग की "एक प्रति" बनाता है।
एंगस

0
sed 's/||/| |/g;s/||/| |/g' filename-here

उपरोक्त कमांड पाइप के लिए है इसलिए इसे टैबस्पेस के साथ बदलें।

आपको बस खाली कॉलम को एक खाली जगह से बदलना होगा और आउटपुट को उस कमांड पर पाइप करना होगा जिसे आप पहले से उपयोग कर रहे हैं।

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