Você tem apenas dois casos:
- o campo
38=
vem antes do campo11=
(Clientid
) - o campo
38=
vem depois do campo11=
(Clientid
)
Portanto, uma maneira do KISS de processar o arquivo é
sed -E \
-e 's/(Order):([0-9]*).*[,|]38=([0-9]*).*[,|]11=([0-9]*).*/- 38= Clientid=/' \
-e 's/(Order):([0-9]*).*[,|]11=([0-9]*).*[,|]38=([0-9]*).*/- 38= Clientid=/' \
report.txt
Teste:
$ sed -E \
> -e 's/(Order):([0-9]*).*[,|]38=([0-9]*).*[,|]11=([0-9]*).*/- 38= Clientid=/' \
> -e 's/(Order):([0-9]*).*[,|]11=([0-9]*).*[,|]38=([0-9]*).*/- 38= Clientid=/' \
> report.txt
Order-479959 38= 723 Clientid=884
Order-24780 38= 470 Clientid=405
Order-799794 38= 350 Clientid=216
Order-72896 38= 17 Clientid=735