sed - search and print the value inside tags using script -


मेरी इस तरह एक फाइल है abc.txt

  & lt; ra & gt; & lt; r & gt; 12.34 & lt; / r & gt; & lt; ई & gt; 235 & lt; / e & gt; & lt; एक & gt; 34.908 & lt; /a><r>23</r><a>234.09</a><p>234</p><a>23</a></ra> & LT; हैलो & gt; sadfaf & lt; / हैलो & gt; & LT; हाय & gt; hiisadf & lt; / हाय & gt; & LT; रा & gt; & lt; रों & gt; asdf & lt; / s & gt; & lt; qw & gt; 345 & lt; / qw & gt; & lt; a & gt; 345 & lt; / a & gt; & lt; पो & gt; 234 & lt; / पो & gt; & lt; a & gt; 345 & lt; / a & gt; & lt ; / रा & gt;  

मुझे क्या करना है मुझे & lt; ra & gt; टैग और अंदर के लिए & lt; ra & gt; टैग ढूंढना होगा & lt; a & gt; टैग जिसका वेलेस मुझे भीतर के मूल्यों को कुछ चर में संग्रहीत करना है जो मुझे आगे की प्रक्रिया में करना चाहिए। मुझे यह कैसे करना चाहिए?

टैग के भीतर टैग के भीतर मान हैं:
34.908,234.09,23
345,345

यह awk चाहिए:

  cat file & LT; रा & gt; & lt; आर & gt; 12.34 & lt; / आर एंड gt; & lt; ई & gt; 235 & lt; / ई & gt; & lt; a & gt; 34.908 & lt; / a & gt; & lt; आर & gt; 23 & lt; / आर & gt; & lt; a & gt; 234.09 & lt; / एक & gt; & lt; p & gt; 234 & lt; / p & gt; & lt; a & gt; 23 & lt; / a & gt; & lt; / रा & gt; & lt; a & gt; 12344 & lt; / a & gt; & lt; रा & gt; & lt; ई & gt; 45 & lt; / ई & gt; & lt; a & gt ; 666 & lt; / a & gt; & lt; / रा & gt; & LT; हैलो & gt; sadfaf & lt; / हैलो & gt; & Lt; hi & gt; इस रेखा से कोई प्रिंट नहीं है & lt; / hi & gt; & lt; a & gt; 256 & lt; / a & gt; & LT; रा & gt; & lt; रों & gt; asdf & lt; / s & gt; & lt; qw & gt; 345 & lt; / qw & gt; & lt; a & gt; 345 & lt; / a & gt; & lt; पो & gt; 234 & lt; / पो & gt; & lt; a & gt; 345 & lt; / a & gt; & lt ; / रा & gt;  

  awk -v आरएस = "& lt;" -f "& gt;" '/ ^ आरए /, / \ / आरए / {if (/ ^ a & gt; /) प्रिंट $ 2}' फ़ाइल 34.908 234.0 9 23 666 345 345  

अगर एकाधिक हैं एक पंक्ति में & lt; ra & gt; ... & lt; / ra & gt; समूह।


एक छोटी सी भिन्नता:

  awk - वी आरएस = \ & lt; \ & Gt एफ; '/ \ / Ra / {f = 0} एफ एंड amp; / a / {print $ 2} / ^ ra / {f = 1}' फ़ाइल 34.908 234.0 9 23 666 345 345  
<हर >

यह कैसे काम करता है:

  awk -v आरएस = "& lt;" -f "& gt;" '# यह रिकॉर्ड विभाजक को & lt; और प्रत्येक के लिए एक नई लाइन देता है & lt; / / आरए / / / आरए / / / / आरए / {# के साथ रिकॉर्ड समाप्त करने के लिए "/ आरए" के साथ समाप्त रिकॉर्ड रिकॉर्ड करने के लिए # (/ ^ ए & gt; /) # अगर लाइन "a" प्रिंट $ 2 के साथ शुरू होता है '# प्रिंट दायर 2  

देखने के लिए कि आरएस कैसे बदलता है, कोशिश करता है:

  awk -v आरएस = "& lt;" '$ 1 = $ 1' फ़ाइल आरए & gt; आर & gt; 12.34 / आर & gt; ई & gt; 235 / ई & gt; एक & gt; 34.908 / ए & gt; आर & gt; 23 / आर & gt; एक & gt; 234.09 / ए & gt; पी एंड जी; 234 ...  

इसे एक चर में संग्रहीत करने के लिए आप बीएमडब्लू के सुझाव के रूप में कर सकते हैं:

  var = $ (awk .. ।) Var = $ (awk -v आरएस = \ & lt; -F \ & gt; '/ \ / ra / {f = 0} एफ & amp; / / a / {प्रिंट $ 2} / ^ आरए / एफ = 1 } 'फ़ाइल) गूंज $ var 34.908 234.0 9 23 666 345 345 गूंज "$ var" 34.908 234.09 23 666 345 345  

इसके कई मानों के बाद से, आप एक सरणी का उपयोग कर सकते हैं:

  सरणी = ($ (awk -v आरएस = \ & lt; -F \ & gt; '/ \ / ra / {f = 0} एफ एंड amp; / ^ a / {print $ 2} / ^ ra $ {Array = 2}} $ echo $ {var2 [0]} 34.908 गूंज $ {var2 [*]} 34.908 234.0 9 23 666 345 345  

Comments

Popular posts from this blog

ios - How do I use CFArrayRef in Swift? -

eclipse plugin - Run java code error: Workspace is closed -

c - Error on building source code in VC 6 -