Com manipulação de substring bash :
s1="abcd"
s2="xwyz"
s1=${s1:0:2}${s2:3}${s1:3}
-
${s1:0:2}- a primeira fatia contendoab(até o terceiro caracterec) -
${s2:3}- o quarto caractere da strings2a ser inserida -
${s1:3}- o último (4º) caractere da strings1
Valor final s1 :
echo $s1
abzd
Ou com a ferramenta GNU awk :
gawk -v s2=$s2 -v FPAT='[a-z]' '{$3=substr(s2,4)}1' OFS="" <<< $s1
abzd
-
<<< $s1- a primeira strings1é considerada como conteúdo de entrada -
-v s2=$s2- passando a segunda strings2como variável para o script awk -
FPAT='[a-z]'- padrão regex que define um valor de campo ([a-z]- qualquer caractere alfabético)
Como alternativa, você também pode aplicar o separador de campo "vazio" FS="" , tratando cada caractere como um campo separado:
gawk -v s2=$s2 'BEGIN{ FS=OFS="" }{$3=substr(s2,4)}1' <<< $s1
abzd