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

sql - VB.NET Operand type clash: date is incompatible with int error -

SVG stroke-linecap doesn't work for circles in Firefox? -

python - TypeError: Scalar value for argument 'color' is not numeric in openCV -