One way would be to first replace all the \| with some character that will not appear in the text, then do the awk and them replace those characters back to \| , e.g.
BrahmaNaiduA,
The awk solution I provided ignores the escape characters which produces the output that matches your expected output. If you want the escape characters to ignore the delimiters then I think you need to refine your expected output.
with your awk script in the middle of the pipeline as Scrutinizer suggested? How long did it take? Does it run so slowly that you can't complete the processing before you need to run it again?
It might be able to be done more efficiently in a more complex awk script. It might be able to be done more efficiently in a C program. But, unless you can explain to us why this simple solution won't work (other than you don't like it), there isn't much incentive for us to try to guess at something that might work faster when we don't know anything about the sizes of your files, the hardware you're using (disk types and how they're connected, operating system, CPU, memory, etc.) there is no way that can guess at a more efficient way to do what this simple pipeline does.
There are execution costs, and there are maintenance costs. The maintenance costs for simple code are much lower.