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
Post a Comment