bash - Print lines after a pattern until second occurrence of a different pattern -


so know how print lines 1 pattern pattern:

sed -ne '/pattern_1/,/pattern_2/ p' 

which works input looks this:

random_line_1 pattern_1 random_line_2 random_line_3 random_line_4 random_line_5 pattern_2 random_line_6 

so lines pattern_1 pattern_2 printed.

but how can print lines until second occurrence of second pattern:

random_line_1 pattern_1 pattern_2 random_line_3 random_line_4 random_line_5 pattern_2 random_line_6 

i want print lines pattern_1 second pattern_2 output:

pattern_1 pattern_2 random_line_3 random_line_4 random_line_5 pattern_2 

more specifically, trying capture text, starting @ header, surrounded empty lines, may or may not have text before header , after second empty line (where pattern_1 header , pattern_2 empty line):

header: <empty line>      some_text      some_more_text      even_more_text      when_will_it_stop <empty line> 

preferably, sed answer work best since know little bit how works, open awk submissions, long every piece of command explained.

a simpler sed example specific case:

sed -ne '/pattern_1/,/pattern_2/{/pattern_1/n;p}'

this says within range, suck line after header pattern_1 pattern space , print it. means if line after pattern_1 pattern_2, occurence of pattern_2 not count range.

in other words: sed -ne '/header/,/^$/{/header/n;p}'


Comments

Popular posts from this blog

node.js - Node js - Trying to send POST request, but it is not loading javascript content -

javascript - Replicate keyboard event with html button -

javascript - Web audio api 5.1 surround example not working in firefox -