परिवर्तित टैब अलग मान ASCII तालिका में


8

टैब पृथक डेटा को इस तरह परिवर्तित करने का सबसे प्रभावी तरीका क्या है:

a   b   c   d   cat
NULL    NULL    NULL    NULL    NULL
NULL    NULL    NULL    d   d
NULL    NULL    c   NULL    c
NULL    NULL    c   d   c; d
NULL    b   NULL    NULL    b
NULL    b   NULL    d   b; d
NULL    b   c   NULL    b; c
NULL    b   c   d   b; c; d
a   NULL    NULL    NULL    a
a   NULL    NULL    d   a; d
a   NULL    c   NULL    a; c
a   NULL    c   d   a; c; d
a   b   NULL    NULL    a; b
a   b   NULL    d   a; b; d
a   b   c   NULL    a; b; c
a   b   c   d   a; b; c; d

इसके कुछ करीब:

a    | b    | c    | d    | cat
-----+------+------+------+-----------
NULL | NULL | NULL | NULL | NULL
NULL | NULL | NULL | d    | d
NULL | NULL | c    | NULL | c
NULL | NULL | c    | d    | c; d
NULL | b    | NULL | NULL | b
NULL | b    | NULL | d    | b; d
NULL | b    | c    | NULL | b; c
NULL | b    | c    | d    | b; c; d
a    | NULL | NULL | NULL | a
a    | NULL | NULL | d    | a; d
a    | NULL | c    | NULL | a; c
a    | NULL | c    | d    | a; c; d
a    | b    | NULL | NULL | a; b
a    | b    | NULL | d    | a; b; d
a    | b    | c    | NULL | a; b; c
a    | b    | c    | d    | a; b; c; d

वर्तमान में मैं नोटपैड ++ का उपयोग निम्नानुसार करता हूं:

  1. टैब को रिक्त स्थान में बदलें
  2. डेटा को मैन्युअल रूप से संरेखित करें
  3. पाइप डालने के लिए कॉलम मोड का उपयोग करें

दूसरा चरण सबसे थकाऊ है और मैं कम से कम इस भाग को स्वचालित होना चाहूंगा।

नोट: मैं काम करते समय एक ब्राउज़र का उपयोग करता हूं और कभी-कभी मेरे पास एक टेक्स्ट एडिटर खुला होता है। कुशल समाधान वह है जिसमें कम से कम प्रयास की आवश्यकता होती है। मैं उपयोग कर सकता हूं:

  • Notepad ++
  • रेगेक्सप के साथ जेनेरिक टेक्स्ट एडिटर सपोर्ट पाते / रिप्लेस करते हैं
  • जावास्क्रिप्ट ब्राउज़र कंसोल के अंदर टाइप किया गया
  • ऑनलाइन वेब सेवा
  • कमांड लाइन पर PHP ( php -a)

4
आप किस माहौल में हैं? आपके पास कौन से उपकरण उपलब्ध हैं? आप उनमें से किस से परिचित हैं? आप कौन से इच्छुक हैं - या अनिच्छुक - उपयोग करने के लिए? आप इस प्रश्न के प्रयोजनों के लिए "दक्षता" कैसे परिभाषित करते हैं? नौकरी करने के लिए लगभग उतने ही तरीके हैं, जितने ऐसे लोग हैं जो इसे करना चाहते हैं; आपको अतिरिक्त जानकारी प्रदान करने की आवश्यकता है। एक अच्छा प्रश्न कैसे देखें देखें ।
जेफ ज़िटलिन

@JeffZeitlin मैं सवाल अपडेट करूंगा।
सलमान ए

यह एक साधारण awkस्क्रिप्ट है।
बरमार

@ बरमार मैं जाग का उपयोग नहीं कर रहा हूं, लेकिन मुझे यकीन है कि कोई और इसे उपयोगी पाएगा।
सलमान ए

इसके बारे में एक पीसीजी सवाल पूछें - लुलु को सुनिश्चित किया जाएगा। रुको, यह पहले से ही पूछा गया है ... codegolf.stackexchange.com/questions/100613/… (ध्यान दें कि TSV-> CSV केवल एक ही चार अंतर है ... {{(⊃⍵)⍪⍉⍪↑¨↓⍉↑1↓⍵}s¨'⎕T'⎕T¨(s←1↓¨⊢⊂⍨⊢=⊃)¯1⌽⍵}काम करने के लिए काफी अच्छा लगता है, एह?)

जवाबों:


9

मैं ASCII तालिका में टैब अलग किए गए मानों को कैसे बदल सकता हूं?

मैं इस तरह के कार्य के लिए टेक्स्ट टेबल्स जेनरेटर का उपयोग करता हूं ।

मैंने आपका डेटा उस पृष्ठ पर चिपकाया और उसने निम्न तालिका बनाई:

+------+------+------+------+------------+
| a    | b    | c    | d    | cat        |
+------+------+------+------+------------+
| NULL | NULL | NULL | NULL | NULL       |
+------+------+------+------+------------+
| NULL | NULL | NULL | d    | d          |
+------+------+------+------+------------+
| NULL | NULL | c    | NULL | c          |
+------+------+------+------+------------+
| NULL | NULL | c    | d    | c; d       |
+------+------+------+------+------------+
| NULL | b    | NULL | NULL | b          |
+------+------+------+------+------------+
| NULL | b    | NULL | d    | b; d       |
+------+------+------+------+------------+
| NULL | b    | c    | NULL | b; c       |
+------+------+------+------+------------+
| NULL | b    | c    | d    | b; c; d    |
+------+------+------+------+------------+
| a    | NULL | NULL | NULL | a          |
+------+------+------+------+------------+
| a    | NULL | NULL | d    | a; d       |
+------+------+------+------+------------+
| a    | NULL | c    | NULL | a; c       |
+------+------+------+------+------------+
| a    | NULL | c    | d    | a; c; d    |
+------+------+------+------+------------+
| a    | b    | NULL | NULL | a; b       |
+------+------+------+------+------------+
| a    | b    | NULL | d    | a; b; d    |
+------+------+------+------+------------+
| a    | b    | c    | NULL | a; b; c    |
+------+------+------+------+------------+
| a    | b    | c    | d    | a; b; c; d |
+------+------+------+------+------------+

फिर आप इस आउटपुट (जनरेटर ने बहुत मेहनत की है) को कॉपी कर सकते हैं, नोटपैड ++ में पेस्ट कर सकते हैं और उचित रूप से साफ कर सकते हैं।


5

यदि आपको कमांड-लाइन समाधान की आवश्यकता है, तो आप पंडोक-प्लसेटेबल फिल्टर के साथ पैंडॉक का भी उपयोग कर सकते हैं ।

अपनी तालिका रखें foo.txtऔर निष्पादित करें:

pandoc-placetable --file=foo.txt --delimiter="\t" --header | pandoc -f json -t markdown-simple_tables-multiline_tables -o output.md

जो निम्नलिखित में परिणाम output.md:

| a    | b    | c    | d    | cat        |
|------|------|------|------|------------|
| NULL | NULL | NULL | NULL | NULL       |
| NULL | NULL | NULL | d    | d          |
| NULL | NULL | c    | NULL | c          |
| NULL | NULL | c    | d    | c; d       |
| NULL | b    | NULL | NULL | b          |
| NULL | b    | NULL | d    | b; d       |
| NULL | b    | c    | NULL | b; c       |
| NULL | b    | c    | d    | b; c; d    |
| a    | NULL | NULL | NULL | a          |
| a    | NULL | NULL | d    | a; d       |
| a    | NULL | c    | NULL | a; c       |
| a    | NULL | c    | d    | a; c; d    |
| a    | b    | NULL | NULL | a; b       |
| a    | b    | NULL | d    | a; b; d    |
| a    | b    | c    | NULL | a; b; c    |
| a    | b    | c    | d    | a; b; c; d |

STDIN से पढ़ने के लिए, --fileतर्क को छोड़ दें । STDOUT पर प्रिंट करने के लिए, -oतर्क छोड़ें ।


3

यूनिक्स / लिनक्स columnकमांड का उपयोग करने का रसेलन का विचार एक अच्छा है, लेकिन उनके उत्तर में दी गई कमांड लाइन काफी काम नहीं करती है। सबसे पहले, कमांड लाइन पर टैब के रूप में columnपहचान \t(या \\t) नहीं करता है । यदि आपके पास है bash, तो आप कर सकते हैं

column -t -s$'\t' foo.txt

अन्यथा, आप कर सकते हैं

column -t -s"$(printf '\t')" foo.txt

लेकिन यह भी सवाल का जवाब नहीं है। आप ऊर्ध्वाधर पट्टियाँ प्राप्त कर सकते हैं

column -t -s$'\t' -o' | ' foo.txt

जो उत्पादन की तरह पैदा करता है

a    | b    | c    | d    | cat
NULL | NULL | NULL | NULL | NULL
NULL | NULL | NULL | d    | d
NULL | NULL | c    | NULL | c
NULL | NULL | c    | d    | c; d
NULL | b    | NULL | NULL | b
NULL | b    | NULL | d    | b; d
NULL | b    | c    | NULL | b; c
NULL | b    | c    | d    | b; c; d
a    | NULL | NULL | NULL | a
a    | NULL | NULL | d    | a; d
a    | NULL | c    | NULL | a; c
a    | NULL | c    | d    | a; c; d
a    | b    | NULL | NULL | a; b
a    | b    | NULL | d    | a; b; d
a    | b    | c    | NULL | a; b; c
a    | b    | c    | d    | a; b; c; d

हेडर के बाद डैश लाइन को मैन्युअल रूप से जोड़ना थकाऊ नहीं है।


यदि आपके पास पूर्ण यूनिक्स / लिनक्स प्रणाली तक पहुंच नहीं है, तो आप इसके लिए साइगविन या अन्य यूनिक्स-पसंदों में से एक का उपयोग कर सकते हैं।


आपने यह बताने के लिए मेरे जवाब पर भी टिप्पणी नहीं की कि यह काम नहीं कर सकता है। मुझे टर्मिनल आउटपुट से गुमराह किया गया था, जो टैब्स को डिफ़ॉल्ट रूप से 8 चार्ट्स (मेरी विम set ts=4सेटिंग के विपरीत ) होने के कारण संरेखित करता था ।
रुस्लान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.