bash - sed - print all lines before the nth occurrence of a string -


मान लें कि मेरे पास है:

  सामग्री पंक्ति 1 सामग्री पंक्ति 2 blabla * my_pattern_str * (1 घटना) ... सामग्री लाइन एक्स blabla * my_pattern_str * (nth घटना & lt; - मैं शुरुआत लाइन से यहाँ तक प्रिंट करना चाहता हूं) सामग्री लाइन y सामग्री पंक्ति y + 1 ...  
< P> मैं पहले सभी पंक्तियों को मुद्रित करना चाहूंगा और my_pattern_str के nth occurrence सहित मैं sed (या grep या awk जैसी कोई भी कमांड का उपयोग करके यह कैसे कर सकता / सकती हूं?)

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

समायोजित करें 7 और my_pattern आवश्यकतानुसार।

  awk - V N = 7 '{print} / my_pattern / & amp; amp; amp; & amp; एन & lt; = 0 {exit}'  

अधिक क्रिप्टिक रूप से, निम्न भी कार्य करेगा:

< पूर्व> awk -v N = 7 '1; / my_pattern / और amp; amp; & amp; एन & lt; = 0 {exit}'

उपरोक्त दोनों वास्तव में पैटर्न की नौवीं घटना के बजाय पैटर्न वाले एनथ लाइन यदि आप पैटर्न की Nth घटना चाहते हैं:

  awk -v एन = 7-वी एम = my_pattern '1; (N- = gsub (M, "")) & lt; = 0 {Exit} ' 

उदाहरण:

  printf% s \\ n line1 "पंक्ति 2 में पैटर्न" "लाइन 3 में पैटर्न पैटर्न" line4 पैटर्न | Awk -v N = 3 -v एम = पैटर्न '1; (एन- = जीएसयूयूयू (एम, "")) & lt; = 0 {exit}'  

=> <पूर्व> लाइन 1 पैटर्न 2 लाइन में पैटर्न पैटर्न 3


Comments

Popular posts from this blog

sqlite3 - UPDATE a table from the SELECT of another one -

c# - Showing a SelectedItem's Property -

javascript - Render HTML after each iteration in loop -