Assuming the data is structured so that it's always the line before and after that you want you can make use of grep's -A (after) and -B (before) switches to tell it to include the 1 line before the match and 1 line after it:
$ grep -A 1 -B 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
If you want the same number lines before and after the search term you can use the -C (context) switch:
$ grep -C 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
If you'd like to be more stringent when matching the multiple lines you can use the tool pcregrep, to match a pattern over multiple lines:
$ pcregrep -M 'Pseudo.*\n.*42B.*\nstate.*' sample.txt
Pseudo name=Apple
Code=42B
state=fault
The above pattern matches as follows:
-M - multiple lines
'Pseudo.*\n.*42B.*\nstate.*' - matches a group of strings where the first string starts with the word "Pseudo" followed by any characters up until a end of line \n, followed by any characters up until the string "42B" followed by any characters up until another end of line (\n), followed by the string "state"followed by any characters.