#!/bin/bash s='"1"|"Text"|"a" "2"|""Text in quotes""|"ab" "3"|"Text "around" quotes"|"abc" "4"|""Text `in` quotes""|"ab" ' perl -pe 's/(?:^|\|)(")?\K(.*?)(?=\1(?:$|\|))/$2=~s#"|(`)#`$1#gr/ge' <<< "$s"
Standard input is empty
"1"|"Text"|"a" "2"|"`Text in quotes`"|"ab" "3"|"Text `around` quotes"|"abc" "4"|"`Text ``in`` quotes`"|"ab"