Solução usando perl e GNU sed
perl -pe 's/^[^|]*\|\K(10\d{6}\|)/9$1/' file.txt
sed -r 's/^([^|]*\|)(10[0-9]{6}\|)//' file.txt
Em ambos os casos, você pode adicionar -i.bkp para alterar o arquivo no local e copiar o arquivo original para file.txt.bkp ou apenas -i se o backup não for necessário
Editar:
Obrigado @drg por apontar um erro no perl one-liner .. ^.*?\| não garantiria a correspondência da segunda coluna. Por exemplo, ab|asd|10017516|asd seria erroneamente alterado