РЕДАКТИРОВАТЬ: В соответствии с OP это должно быть сделано в одной строке создание 2 переменных, если это так, то попробуйте следующее.
read -r x y <<<$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/\([^|]*\).*=\([^;]*\).*/\1 \2/')
echo "$x"
40125512
echo "$y"
ALPHA3
ИЛИ используйте следующее согласно комментарию сэра анубхава:
read x y < <(sed -E 's~^([^|]+)\|.*External_SOC=(.+);PCRF.*~\1 \2~' <<< "40125512|abcd32External_SOC=ALPHA3;PCRFabcran")
Не могли бы вы попробовать следующее. Можно использовать его из двух отдельных команд для создания двух отдельных переменных.
x=$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/\([^|]*\).*/\1/')
echo "$x"
40125512
y=$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/.*=\([^;]*\).*/\1/')
echo "$y"
ALPHA3