regex question

I have a simple file test.out that contains data in the form of

key1=A|shift1
key2=B|shift2
key3=C|shift3

and so on.

I need to get it to print

A
B
C

I can do it using lookbehind assertion such as this
( ?<==)([a-zA-Z])

yet I was wondering if there is another way of mutching single character following the '=' ?. I am fairly new to regex and so far I could not find good way of matching a part of a string after or before certain characters or set of characters other that using assertions.
Any examples would be helpful.
thank you in advance

sed "s/[^=]*=\(.\).*/\1/" file

thank you it worked.

awk -F'[=|]' '{print $2}' testfile

Being on the same topic I have another question.
If I have files that contains following data

key1^A|shift1|376
key2^B|shift
key3^C|shift23|2|5

and so on

how would I change first instance of the '|' to '^' ?

to have something like this

key1^A^shift1|376
key2^B^shift
key3^c^shift23|2|5

I tried
sed 's/.+\d\^[a-zA-Z]\|.*/s/.+\d\^[a-zA-Z]\^.*/'

but that did not work
thank you in advance

actually its simple sed substitution -

sed 's/|/^/' testfile

that will not work as it will replace all occurances of '|', but only first occurence of '|' needs to be replaced

Did you check it? It worked for me(HP-UX). If that doesnt work, try

sed 's/|/^/1' testfile

It is working. Thank you very much