Sunday, 15 May 2011

linux - how to print file from the match string until EOF -


निम्नलिखित कमांड फाइल WORD

  awk '1; / WORD तक प्रिंट करें / {Exit} 'फ़ाइल  

लेकिन फ़ाइल का अंत स्ट्रिंग WORD शामिल नहीं होने तक स्ट्रिंग WORD से फ़ाइल कैसे मुद्रित करें?

< Div class = "post-text" itemprop = "text">

जैसा कि इटान रीज़नर एक टिप्पणी में कहते हैं, इसमें रेंज पैटर्न की एक अच्छी रसोई की किताब है लेकिन एक पैटर्न से एक फ़ाइल के अंत तक मिलान करने का सबसे आसान तरीका है:

  awk '/ WORD /, 0' फ़ाइल  

एक पैटर्न युक्त रेखा के बाद लाइन से प्रिंट करें, हम इसके बजाय ऐसा कर सकते हैं:

  awk 'found, 0; / WORD / {found = 1}' file  

पहली पंक्ति का हिस्सा भी मुद्रित करने के लिए जो WORD के निम्नलिखित शब्द से मेल खाता है, यह केवल अंतिम क्रिया को संशोधित करने के लिए आवश्यक है, लेकिन match पर एक स्पष्ट कॉल के साथ नियमित अभिव्यक्ति को बदलने के लिए सुविधाजनक है RSTART और RLENGTH को सेट करने के लिए:

  awk 'मिला, 0; मैच ($ 0, / WORD /) {found = 1; print substr ($ 0, RSTART + RLENGTH}'  

रेंज पैटर्न में अभिव्यक्ति , अभिव्यक्ति , और इसका अर्थ है कि पहली पंक्ति से मेल खाता है पहली पंक्ति में पहली अभिव्यक्ति जो अंतिम अभिव्यक्ति से मेल खाती है, शामिल है। जब तक फ़ाइल पूरी तरह से संसाधित नहीं हो जाती तब तक इस श्रेणी को दोहराया जाता है।

इन उदाहरणों में, दूसरी अभिव्यक्ति हमेशा मूल्यांकन करती है Es to 0 (झूठी), इसलिए रेंज कभी समाप्त नहीं होती है और पैटर्न पूरी तरह से एक बार सभी लाइनों का मिलान हो जाता है।

इसी तरह, "सभी लाइनों को छापें जब तक एक पैटर्न को हल करने का एक और तरीका "निम्न होगा, हालांकि यह कम कुशल है क्योंकि यह पूरी फाइल पढ़ता है:

  awk 'NR == 1, / WORD /' फ़ाइल  

इसके अलावा, यदि लक्ष्य केवल पैटर्न के उदाहरण तक प्रिंट करना है (जैसा कि पूर्ण प्रतिमान युक्त पूरी लाइन के विपरीत, हम मूल प्रोग्राम का एक सरल संशोधन कर सकते हैं:

  awk 'मैच ($ 0, / WORD /) {प्रिंट (उप ($ 0,1, RSTART + RLENGTH)); बाहर निकलें} 1 ' 

No comments:

Post a Comment