2012-07-07 6 views
14

जब मैं हर काम है कि पिछले चौबीस घंटे पर काम किया जा चुका है मैं इस तरह लाइनों के साथ एक पाठ फ़ाइल मिल लगाने के लिए टर्मिनल का उपयोग करें:मैं टर्मिनल से टेक्स्ट फ़ाइलों में टैब कैसे डाल सकता हूं?

एबीसी 12345 नौकरी, DATE

डीईएफ़ 67890, DATE को एक और नौकरी पर काम किया

DATE के

पर

GHI 10112 अंतिम नौकरी यह पाठ फ़ाइल को सौ लाइनों हो सकता है। मुझे यह सब डेटा माइक्रोसॉफ्ट एक्सेल में एक टैबलेट में डालना होगा। मेरे जीवन को आसान बनाने के लिए, मैं संख्याओं के बाद, प्रत्येक पंक्ति में एक टैब जोड़ने का तरीका जानना चाहता हूं।

कुछ इस तरह:

echo "ABC 12345 <tab> Job Worked on DATE" >> jobs.txt 
echo "DEF 67890 <tab> Another Job on DATE" >> jobs.txt 
echo "GHI 10112 <tab> Final Job on DATE" >> jobs.txt 

मैं यह कैसे प्राप्त होगा?

+0

शायद आप आसपास के स्थान नहीं चाहते हैं ई टैब अक्षर। –

+0

एमएस एक्सेल में टैब टैब होने की आवश्यकता नहीं है, आप आयात के लिए विभाजक चरित्र चुन सकते हैं, आप कुछ ऐसा चुन सकते हैं जो ',' या ';' जैसा दिखाई दे और बस उन पात्रों के साथ फ़ाइल को संपादित करें। – pizza

उत्तर

32

टैब के लिए \ t के साथ echo -e का उपयोग करें। इस तरह:

echo -e "ABC 12345 \t Job Worked on DATE" >> jobs.txt 
+1

-ई ध्वज क्या करता है? जब मैं गूंजता हूं, तो यह मुझे केवल एक झंडा देता है। – W3Geek

+2

@ W3Geek: यह इस बात पर निर्भर करता है कि आप किस 'echo' का उपयोग कर रहे हैं। बैश का अंतर्निहित 'echo' कमांड' -e' को पहचानता है, जो टैब के लिए '\ t' सहित कुछ बैकस्लैश-एस्केक्ड वर्णों की व्याख्या को सक्षम बनाता है। लेकिन 'echo' के सभी संस्करण ऐसा नहीं करते हैं। 'Printf' कमांड एक बेहतर विकल्प है - लेकिन यह देखते हुए कि आपके पास पहले से ही टेक्स्ट के रूप में जानकारी है, यह 'sed',' awk', या कुछ इसी तरह का उपयोग करके इसे बदलने के लिए बेहतर है। –

+0

ठीक है मैं देखता हूं कि ध्वज कैसे काम करता है। =) हालांकि यह मेरे 'आदमी गूंज' में दिखाई नहीं दे रहा था। मुझे समझ में नहीं आता कि sed या awk कमांड क्या करते हैं। – W3Geek

5

तुम एक कच्चे टैब टाइप करने के लिए Ctrl-Vटैब दबा सकते हैं।


तुम भी $'...' सी-स्ट्रिंग सिंटैक्स का उपयोग कर सकते हैं:

echo $'ABC 12345 \t Job Worked on DATE' >> jobs.txt 
+1

टेक्स्ट में '\ t' प्राप्त करता हूं, लेकिन चूंकि ओपी में सभी डेटा टेक्स्ट के रूप में हैं, और बस इसे बदलने की जरूरत है, फिर से टाइप करना यह * सबसे अच्छा दृष्टिकोण नहीं होगा। –

+0

आप सही @ KeithThompson हैं। मैं जो कर रहा हूं उसके लिए यह सबसे अच्छा तरीका नहीं होगा। मैंने उपर्युक्त पद चुना क्योंकि वह सबसे सरल दृष्टिकोण था। – W3Geek

1

दूसरे क्षेत्र के लिए एक टैब जोड़ें:

awk '{$2 = $2 "\t"; print}' inputfile > outputfile 

ही तरह, लेकिन एक regex का उपयोग कर:

sed 's/[[:digit:]]\+/&\t/' inputfile > outputfile 
+0

'awk' और 'sed' कमांड क्या करते हैं? – W3Geek

+0

@ डब्ल्यू 3 गीक: वे टेक्स्ट-ट्रांसफॉर्मेशन फ़िल्टर दोनों हैं। विशेष रूप से 'awk' एक पूर्ण उड़ा प्रोग्रामिंग भाषा है (और' sed' तर्कसंगत भी है)। टिप्पणी में पूरी तरह से उन्हें समझा जाना असंभव है। यदि आपके सिस्टम में 'मैन' कमांड है, या Google या विकिपीडिया खोज करें तो 'मैन sed' और/या' man awk' 'आज़माएं। –

+0

कि 'sed' कमांड काम नहीं करता है, कम से कम मेरे लिए नहीं (जीएनयू sed 4.2.1)। 'sed' डिफ़ॉल्ट रूप से विस्तारित नियमित अभिव्यक्तियों (विशेष रूप से '+' क्वालीफायर) को पहचान नहीं करता है।और यदि ऐसा हुआ, तो आपका'// /// 'आदेश * टैब वर्ण द्वारा अंकों के अनुक्रम को प्रतिस्थापित करेगा; आप * एक टैब चरित्र * जोड़ना चाहते हैं। –

संबंधित मुद्दे