2011-07-01 12 views
13

मैं अपने sqlite3 आउटपुट को टैब द्वारा अलग करना चाहता हूं। द कॉलम विकल्प मुझे अनुकूल नहीं करता है क्योंकि रिक्त स्थान और मेरे मानों के साथ अलग-अलग रिकॉर्ड्स में रिक्त स्थान हैं लेकिन कोई टैब नहीं है।sqlite3 आउटपुट एक लाइन कमांड से टैब के साथ

यदि मैं interactively sqlite3 का उपयोग करता हूं तो मैं .mode tab का उपयोग कर सकता हूं। एक-लाइन कमांड में विकल्प-सेपरेटर है लेकिन मुझे नहीं पता कि वहां एक टैब कैसे जोड़ना है जो एक टैब के रूप में व्याख्या नहीं किया जाता है (शायद और ASCII कोड?)

कोई सुझाव? मैंने पाया कि सभी Google उदाहरण इंटरैक्टिव sqlite3 के लिए था।

पल मैं जानवर बल दृष्टिकोण का उपयोग कर रहा पर:

sqlite3 -header mydb "select * from table1" | tr \| '\t' > myoutput 
+0

मैं -separator विकल्प के लिए टैब जोड़ने का एक रास्ता मिल गया टैब (सिंगल कोट्स द्वारा बढ़ाया गया) –

+2

कृपया, अपनी आत्म-टिप्पणी को उत्तर के रूप में दोबारा लिखें (और 2 या उससे अधिक दिनों के बाद इसे स्वीकार करें, यह आपको स्वयं उत्तर स्वीकार करने की अनुमति देगा), इसलिए यह स्पष्ट है कि समस्या हल हो गई है और किसी के लिए कैसे जो समान समस्या का सामना करते हैं और समाधान की तलाश में आता है। धन्यवाद। –

+0

@jan, धन्यवाद, मैं अपनी टिप्पणी को उत्तर के रूप में रख सकता हूं लेकिन बात यह है कि मुझे यह समाधान पसंद नहीं है (न तो tr एक)। मेरे पास कोड पुन: उपयोगिता और रखरखाव के बारे में मजबूत राय है इसलिए मुझे कोई भी कोड पसंद नहीं है जो कमांड लाइन में स्पष्ट रूप से रिक्त स्थान और टैब के बीच अंतर नहीं करता है। मैं इस समय बेहतर समाधान की प्रतीक्षा करूंगा। –

उत्तर

23

यह काम करना चाहिए:

sqlite3 -separator $'\t' -header mydb "select * from table1" 

$ अपने खोल बताता है एक टैब वर्ण का विस्तार करने के।

+0

+1 यह मेरे समाधान धन्यवाद से बेहतर है। अगर आपको कोई फर्क नहीं पड़ता तो मैं इस समय अन्य उत्तरों के लिए थोड़ा इंतजार करूंगा। –

12

आप सीधे .mode tab जब एक खोल स्क्रिप्ट में SQLite का उपयोग कर (उदाहरण के लिए) का उपयोग कर सकते एक का उपयोग करके यहाँ दस्तावेज़ की तरह: नियंत्रण-वी:

sqlite3 -header mydb <<EOF 
.mode tabs 
select * from table1; 
EOF 
संबंधित मुद्दे