2009-01-20 12 views
6

के साथ इंडेंट टेक्स्ट बनाना मैं एक पठनीय तरीके से स्क्रीन पर एक सूची मुद्रित करना चाहता हूं। मैं प्रत्येक तत्व के माध्यम से जाने के लिए एक लूप का उपयोग करता हूं और एक नई सूची बनाता हूं जो अल्पविराम और न्यूलाइन के साथ स्वरूपित होता है। समस्या यह है कि आउटपुट की पहली पंक्ति में, मुझे एक शीर्षक चाहिए। जैसे, मैं कुछ इस तरह प्रिंट करना चाहते हैं:बैश

List: red, green, blue, black, cars, 
     busses, ... 

समस्या दूसरे और निम्नलिखित लाइनों में खरोज बनाने के लिए है। मैं इंडेंटेशन को दी गई लंबाई का होना चाहता हूं। इसलिए किसी दिए गए लंबाई की खाली रेखा बनाने के लिए समस्या कम हो जाती है। यही है, मैं एक समारोह चाहता हूं, create_empty_line_of_length, जो रिक्त स्थान की मात्रा को आउटपुट करता है।

length=5 
echo "start:$(create_empty_line_of_length $length) hello" 

उत्पादन इस मामले में होना चाहिए:

start:  hello 

किसी को भी ऐसा करने के तरीके पता है?

उत्तर

6

यह

yes ' ' | head -7 | tr -d '\n' 

अपना नंबर में बदलें '7' हो जाएगा।

शायद तुम

man fmt 

भी पर एक नज़र रखना चाहिए।

9
printf '%7s' 

शायद ऐसा करने का सबसे प्रभावी तरीका होगा।

इसका अधिकांश शेल अधिकांश समय में बनाया गया है, और यदि नहीं/usr/bin/printf कोर्यूटल्स से फ़ॉलबैक के रूप में मौजूद है।

तो

printf '%7s%s\n%7s%s\n' '_' 'hello' '_' 'world' 

 _hello 
     _world 

(मैं इस्तेमाल किया _ क्षेत्र की बजाय यहाँ है, लेकिन अंतरिक्ष भी काम करता है क्योंकि पार्टी '' समझता है) पैदा करता है

+0

क्या 'हैलो' और 'दुनिया' के सामने सात '_ नहीं होना चाहिए? आपका धन्यावाद। यह काम करता है :) –

+0

नाह, "% 7s" एक शुद्ध संरेखण नियम है, यह कहता है "एक स्ट्रिंग लें, और इसे स्थिति 7 के साथ सही संरेखित करें, यानी: यह केवल स्थान बनायेगा। '% 2s' 'हैलो वर्ल्ड' नहीं होगा कोई भी जगह जोड़ें, क्योंकि "हैलो वर्ल्ड" 2 से बड़ा है, लेकिन '% 40s \ n% 40s \ n' 'हैलो' 'वर्ल्ड' हेलो और दुनिया को पॉज़ 40 –

+0

के साथ संरेखित करेगा ओह, धन्यवाद! यह उपयोगी है! –

1

सुनिश्चित नहीं हैं कि अगर यह जा रहा है आपकी मदद http://unstableme.blogspot.com/2008/12/awk-formatting-fields-into-columns.html

+0

इस प्रश्न पूछने से पहले मुझे जिस समस्या का सामना करना पड़ा था, उसके लिए इसकी आवश्यकता नहीं है, नहीं। यह प्रेरणादायक है, हालांकि! मैं अजीब का उपयोग करने के तरीके में और अधिक देखूंगा, क्योंकि यह एक शक्तिशाली उपकरण प्रतीत होता है। :) –