sed
somente substituirá a substring correspondente de uma string.
$ echo '01XX1234' | sed 's/XX/AF/'
01AF1234
Se você pretende sempre substituir o terceiro e quarto caractere, mas manter o primeiro e o segundo intactos, você pode usar:
$ echo '01XX1234' | sed 's/\(.\{2\}\).\{2\}/AF/'
01AF1234
-
\{2\}
significa duas ocorrências do caractere anterior (nesse caso.
: qualquer caractere) -
\(...\)
parênteses são usados para criar um grupo correspondente; você pode se referir à subsequência correspondente mais tarde no padrão ou na string de substituição -
refere-se à primeira substring correspondida (neste caso, ou seja, "01")