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