【求助】如何在菜单中修改文件?

【求助】如何在菜单中修改文件?

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
        ┃     2005/02/01                    资料维护                               <MKCCLEMI>  ┃
        ┃                                                                                                                        ┃
        ┣━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┫
        ┃ 01. 机台号        ┃ [ 018 ]                                                                             ┃
        ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫
        ┃ 02. 错误条码    ┃ [  111111111111       ]   (请输入数字0 - 16)            ┃
        ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫
        ┃ 03. 正确条码    ┃ [   222222222222       ]   (请输入数字0 - 16)            ┃
        ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫
        ┃ 04. 当前日期    ┃ [   02.01   ]                                                                      ┃
        ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫
        ┃ 05. 是否确认     ┃ [  Y  ]         (Y/N)                                                            ┃
        ┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━┛
主要是想通过修改如文件名为018___02.01d中的错误条码改为正确的018是机台号02.01是当前日期d只是标记。当我输入完毕后自动把错误的条码改为正确的。请明白我说的能给个提示吗?      
i don't know what you're talking about      
我的意思是在文件018___02.01d里有错误的字符如111要通过上面的菜单来修改相应时间的文件
把文件里的111替换成222  而018___02.01d中的文件是这样的


018   7086  2005012511470010 10000000002819235025100025200    180     18.89
  3.40      0.00      0.0025100   13.0N                          0.000125180010
018   7086  2005012511470010  9000000002217177125121042300    190     15.26
  2.90      0.00      0.0025121   17.0N                          0.000125180010
018   7086  2005012511470010  8000000002059803722100043200    375      5.87
  2.20      0.00      0.0022100   13.0N                          0.000125180010
018   7086  2005012511470010  7000000002018446922102017300    965      1.76
  1.70      0.00      0.0022102   13.0N                          0.000125180010
018   7086  2005012511470010  6000692754170072215900041400      1      1.60
  1.60      0.00      0.0015900   17.0N                          0.000125180010
018   7086  2005012511470010  5000000002027020924000001000    255     15.69
  4.00      0.00      0.0024000   13.0N                          0.000125180010
018   7086  2005012511470010  4000000002245965720996792700    210     17.62
  3.70      0.00      0.0020996   17.0N                          0.000125180010
018   7086  2005012511470010  3000000002004899022106027500    460      4.78
  2.20      0.00      0.0022106   13.0N                          0.000125180010
018   7086  2005012511470010  2000691252880022915131000900      1      1.30
  1.30      0.00      0.0015131   13.0N                          0.000125180010
018   7086  2005012511470010  1000000002217691223102021200      1      3.70
  3.70      0.00      0.0023102   17.0N                          0.000125180010
018   7086  2005012509220009  3000000002005716921120006700    580     23.62
13.70      0.00      0.0021120   13.0N0703000361101             0.000125180009


红字是我想改的数字串 要改成其他的数字  版主帮忙 谢谢 在线等中 因为要处理上百条      
i still don't know exactly what you're talking about.      
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 2005/02/01 资料维护 <MKCCLEMI> ┃
┣━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┫
┃ 01. 机台号 ┃ [ 018 ] ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫
┃ 02. 错误条码 ┃ [ 111111111111 ] (请输入数字0 - 16) ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫
┃ 03. 正确条码 ┃ [ 222222222222 ] (请输入数字0 - 16) ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫
┃ 04. 当前日期 ┃ [ 02.01 ] ┃
┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫
┃ 05. 是否确认 ┃ [ Y ] (Y/N) ┃
┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━┛
前提:红字是要在菜单中输入的  关联文件名018___02.01d

目的:达到修改文件中的(02)项为(03)项数字(数字是包含在文件018___02.01d 里的),就是
            用直观的方法替换 而不是用vi  找到数字再去替换。      
替换字符串可以用 sed      
哎!!!!      
sed的用法是这样:
echo "018 7086 2005012511470010 200069125288002291513100900 1 1.30"|sed 's/[0-9]\{3\} [0-9]\{4\} [0-9]\{16\} [0-9]\{4\}\([0-9]\{15\}\).*/\1/'
出来的结果是:691252880022915,就是你红色的那部分.
如果要替换就这样:
echo "018 7086 2005012511470010 200069125288002291513100900 1 1.30"|sed 's/\([0-9]\{3\} [0-9]\{4\} [0-9]{16\} [0-9]\{4\}\)[0-9]\{15\}\(.*\)/\199999\2/'
出来的结果是:018 7086 2005012511470010 200099999131000900 1 1.30

本人不才,写出如此冗长的命令,希望板主指点一二.      
可能是他的问题太复杂了,我到现在还没明白他到底是要写一个菜单还是仅仅想替换一个字符串      
echo -e "请输入你要修改的机台号 日期(如01.25) 错误条码 正确条码"
           read Cont Dte Err Rgt
           cp ${Cont}___${Dte}d ${Cont}___${Dte}d.bak
           cat ${Cont}___${Dte}d | sed  "s/$Err/$Rgt/g" > ${Cont}___${Dte}d


???错误??