Thursday, 15 April 2010

string - Multilevel parsing using shell command -


मेरे पास निम्न स्वरूप में एक फाइल है

  ///// name 1 start_occurrence : घटना 1 घटना 2 / / / / 2 नाम 2 प्रारंभ_अक्षा: घटना 1 घटना 2 /// नाम 3 प्रारंभ_आकार: घटना 1 घटना 2 घटना 3   

मुझे सिर्फ एक की गणना करना है प्रत्येक नाम के लिए घटनाओं की संख्या और उन्हें एक CSV फ़ाइल में सहेजें। क्या मैं इसे शेल कमांड के किसी भी संयोजन का उपयोग कर सकता हूं? हां, मैं इसे प्रोग्राममैटिक रूप से कर सकता हूं, लेकिन एक पाइप पंक्तिबद्ध फैशन में शेल के कमानों की तलाश कर रहा हूं।

" नाम " कुछ भी हो सकता है नाम एक पैटर्न के साथ नहीं आया है केवल पकड़ यह है कि /// के बाद का नाम है। घटना के पास इसके साथ कोई भी संख्या नहीं है, किसी भी रेखा को घटना से शुरू होता है या घटना ब्याज का विषय है।

< / Div>

  awk 'सी == "THISISNAME" {b = $ 0; c = "";} $ 1 == " /// "{c =" THISISNAME "} $ 0 ~ / \ & lt; occurrence \ & gt; / {a [b] + = 1;} END {के लिए (i में) {प्रिंट i" a [i]} } "YOUR_FILE_HERE"  

समझाएं:

  यदि नाम की प्रारंभ स्थिति ($ 1 == "///") से मेल खाती है, तो सी को THISISNAME पर चिह्नित करें। यदि यह नाम की रेखा है (सी == "THISISNAME"), तो नाम के साथ रेखा को चिह्नित करें, और चिह्न सी के रूप में नाम भाग समाप्त (c = "")। अगर घटना की स्थिति ($ 0 ~ / \ & lt; घटना \ & gt; /) से मेल खाती है, तो एक [बी] + = 1 बनाओ। प्रत्येक नाम की प्राप्ति के समय पर टिप्पणी करने के लिए मानचित्र का उपयोग करें।  

aws EREs का उपयोग करता है, $ 0 ~ / EREs / $ $ का मतलब regex से मेल खाता है '\ & Lt;' और '>' का अर्थ है 'बी' में 'पी'


No comments:

Post a Comment