Bash, grep between a line with specified string till a character (not include) -


example:

> header abc , blablabla some_lines1 some_lines2 some_lines3 > header bcf , blablabla some_lines4 some_lines5 > header abc , blablabla some_lines6 >...... 

here want grep line 'abc' , lines after before '>', result should like:

> header abc , blablabla some_lines1 some_lines2 some_lines3 > header abc , blablabla some_lines6 > ... 

since number of lines in between not fixed, can't apply grep -a i've tried using sed, doesnt work well:

sed -n '/abc/,/>/p' file 

unwanted result:

> header abc , blablabla some_lines1 some_lines2 some_lines3 > header bcf , blablabla > header abc , blablabla some_lines6 

another sed:

sed -n '/abc/,/>/{/abc/b;/>/b;p}' file 

unwanted result:

some_lines1 some_lines2 some_lines3 some_lines6 

you can use awk:

awk '/^>/{p=0} /abc/{p=1} p' file > header abc , blablabla some_lines1 some_lines2 some_lines3 > header abc , blablabla some_lines6 

Comments

Popular posts from this blog

android - Why am I getting the message 'Youractivity.java is not an activity subclass or alias' -

java - Log4j2 configuration not found when running standalone application builded by shade plugin -

python - How do I create a list index that loops through integers in another list -