Não consigo encontrar uma maneira de substituir apenas em determinada posição usando o "sed"! Francamente eu não sei se você pode fazer isso com "sed" exclusivamente! Mas, com o código abaixo, você resolverá o problema. Obviamente não performativo.
f_ez_sed() {
: 'Facilitate the use of "sed" functionality .
Args:
TARGET (str): Value to be replaced by the REPLACE value.
REPLACE (str): Value that will replace TARGET.
FILE (str): File in which the replacement will be made.
NTH_OCCUR (Optional[int]): Perform the operation only on the indicated
occurrence.
'
TARGET=$1
REPLACE=$2
f_ez_sed_ecp "$TARGET" 1
TARGET=$F_EZ_SED_ECP_R
f_ez_sed_ecp "$REPLACE" 1
REPLACE=$F_EZ_SED_ECP_R
FILE=$3
NTH_OCCUR=$4
if [ ${NTH_OCCUR} -gt -1 ] ; then
((NTH_OCCUR++))
for (( i=0; i<$(( $NTH_OCCUR - 1 )); i++ )) ; do
SED_RPL="'0,/$TARGET/s//£§¢¬¨/g'"
eval "sed -i $SED_RPL $FILE"
done
SED_RPL="'0,/$TARGET/s//$REPLACE/g'"
eval "sed -i $SED_RPL $FILE"
SED_RPL="'s/£§¢¬¨/$TARGET/g'"
eval "sed -i $SED_RPL $FILE"
else
SED_RPL="'s/$TARGET/$REPLACE/g'"
eval "sed -i $SED_RPL $FILE"
fi
}