Это может работать для вас:
sed '/error=9607/,/ClassThree/{//!d}' file
ClassOne:error=9607
ClassThree:I|want|to|extract|this|text|after|error=9607
Если вы хотите только строку ClassThree
:
sed '/error=9607/,/ClassThree/{/ClassThree/!d}' file
ClassThree:I|want|to|extract|this|text|after|error=9607
Если вы хотите, чтобы все строки, содержащие ClassThree
, впоследствии:
cat <<! >file
> ClassOne:error=9607
> ClassTwo:This is junk test
> ClassThree:I|want|to|extract|this|text|after|error=9607
> ClassOne:error=9608
> ClassTwo:This is junk test
> ClassThree:I|want|to|extract|this|text|after|error=9607
> ClassOne:error=9609
> ClassTwo:This is junk test
> ClassThree:I|want|to|extract|this|text|after|error=9607
>!
sed '/error=9607/h;G;/ClassThree.*\n./P;d' file
ClassThree:I|want|to|extract|this|text|after|error=9607
ClassThree:I|want|to|extract|this|text|after|error=9607
ClassThree:I|want|to|extract|this|text|after|error=9607
или это решение awk:
awk '/error=9607/{p=1};/ClassThree/ && p' file