2012-07-17 11 views
5

यह बहुत ही बुनियादी सवाल है। लेकिन मुझे इसमें मुद्दों का सामना करना पड़ रहा है और मुझे नहीं पता क्यों। समस्या यह है कि जब मैं एक पंक्ति में awk आदेश चला ऐसेलाइनों को विभाजित करके एक अजीब चलाना

awk 'BEGIN {} {print $0;}' FILE 

तब के रूप में कोड perfecctly

चल रहा है लेकिन अगर मैं इस तरह के

awk ' 
BEGIN 
{ 
} 
{ 
     print $0; 
}' FILE 

के रूप में लाइनों के बीच कोड विभाजित यह देता है मुझे एक त्रुटि बताती है कि BEGIN में एक्शन पार्ट होना चाहिए। मैं सोच रहा था क्योंकि यह वही कोड है जिसे मैं स्वरूपित कर रहा हूं, मुझे यह त्रुटि क्यों मिल रही है। मेरे लिए इसे हल करने के लिए यह वास्तव में महत्वपूर्ण है क्योंकि मैं कोडों की बड़ी लाइनों को अजीब रूप से लिखना चाहता हूं, यह मेरे लिए प्रारूपित करना और हर बार एक ही पंक्ति में लाने के लिए मुश्किल होगा। क्या आप कृपया इस बारे में मेरी मदद कर सकते हैं। धन्यवाद। ध्यान दें। मैं खोल वातावरण में यह अजीब चल रहा हूं

+0

यदि आपको अपने BEGIN ब्लॉक में किसी भी कोड की आवश्यकता नहीं है, तो आपको इसे हटाना चाहिए। अन्यथा ... विश्वास करें कि त्रुटि संदेश आपको क्या बता रहे हैं! ;-) 'awk' BEGIN {} का प्रयास करें; {प्रिंट $ 0;} 'फ़ाइल' यह देखने के लिए कि क्या त्रुटि संदेश को genterates करता है। सौभाग्य। – shellter

उत्तर

5

'{' right after the BEGIN` जोड़ें और आप त्रुटि संदेश प्राप्त करेंगे।

BEGIN के लिए खोलने { कोष्ठक BEGIN रूप same लाइन पर होने की जरूरत है। तो बदल क्या आप

awk ' 
BEGIN 
{ 

को

awk ' 
BEGIN { 

है और आप त्रुटि संदेश प्राप्त नहीं होगा।

manual बताता है कि "BEGIN और END नियमों में क्रियाएं होनी चाहिए;", ताकि यह एक और समस्या हो। यह

awk 'BEGIN {} ... 

मेरे लिए थोड़ा अजीब लगता है (और वहाँ वास्तव में है इस करता है, तो कुछ भी नहीं हो रहा है के लिए कोई कारण) @ Birei के सहायक टिप्पणी नीचे बताते हैं कि जिस तरह से इन बयानों "पार्स जाएगा

दोनों मामलों में अलग-अलग। अगली पंक्ति में खुला '{' पैटर्न के बिना एक क्रिया के रूप में पार्स किया गया है (BEGIN से संबंधित नहीं), जबकि उसी पंक्ति में BEGIN नियम की खाली कार्रवाई का अर्थ है। "

+1

+1, दोनों मामलों में पार्स अलग होगा। अगली पंक्ति में खुले माता-पिता को पैटर्न के बिना एक क्रिया के रूप में पार्स किया जाता है ('BEGIN' से संबंधित नहीं), जबकि उसी पंक्ति में' BEGIN' नियम की खाली कार्रवाई होती है। – Birei

+0

बेशक आप अपनी इच्छा के अनुसार अपना उत्तर पूरा कर सकते हैं, क्रेडिट के बारे में चिंता न करें, मुझे कोई फर्क नहीं पड़ता :-) – Birei

+0

@ बिरी क्रेडिट जहां क्रेडिट देय है :-) – Levon

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

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