複数の文字列を一括置換する

#!/bin/sh
#string_rep.sh

. f_askfname.sh
. f_askstring.sh

ask_filename "Target File( Blank is Cancel. ): " 1
if [ $? -ne 0 ]; then
    echo "***Canceled."
    return 1
fi
FILE1=${_STR}
echo "Target File is \"${FILE1}\""

ask_string "Save File [${FILE1}.rep]: " 1
if [ $? -ne 0 ]; then
    FILE2="${FILE1}.rep"
else
    FILE2={$_STR}
fi
echo "Save File is \"${FILE2}\""

SFILE=sprit.sed #sedの検索/置換パラメータファイル
NUM=1
while [ $NUM -lt 100 ]; do

    #検索文字列入力
    ask_string "Search String( Blank is END String. ): " 1
    if [ $? -ne 0 ]; then
        break
    fi
    STR1=${_STR}

    #置換文字列入力
    ask_string "Replace String: " 1
    STR2=${_STR}

    #sedの検索/置換パラメータファイルに出力
    OSTR="s/$STR1/$STR2/g"
    if [ $NUM -eq 1 ]; then
        echo "$OSTR" > $SFILE
    else
        echo "$OSTR" >> $SFILE
    fi
    NUM=$(expr $NUM + 1)
done

#検索/置換の実行
if [ $NUM -gt 1 ]; then
    sed -f ${SFILE} ${FILE1} > ${FILE2}
    #rm ${SFILE}
    echo ${SFILE}
    echo "*** Successful."
else
    echo "*** Canceled."
fi
unset FILE1 FILE2 _STR STR1 STR2 NUM OSTR SFILE
$ cat 1.txt
1 g
2 f
3 e
4 d
5 c
6 b
7 a

$ ./string_rep.sh 
Target File( Blank is Cancel. ): 1.txt
Target File is "1.txt"
Save File [1.txt.rep]: 
Save File is "1.txt.rep"
Search String( Blank is END String. ): a
Replace String: x
Search String( Blank is END String. ): 
sprit.sed
*** Successful.

$ cat 1.txt.rep
1 g
2 f
3 e
4 d
5 c
6 b
7 x