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