- 论坛徽章:
- 0
|
在EC程序移植过程中,令人头痛的是数据库存储结构的不同造成程序的大量改动。
比如,在原始程序的有很多与如下类似的建表语句:
- EXEC SQL CREATE RAW TABLE aaaaa
- {
- a char(2)
- }
- FRAGMENT BY ROUND ROBIN
- IN workdbs1, workdbs2, workdbs3, workdbs4, workdbs5, workdbs6,
- workdbs7, workdbs8;
复制代码
在新的系统中数据库并没有这样的dbs分配,要改造程序的话,需要将
- FRAGMENT BY ROUND ROBIN
- IN workdbs1, workdbs2, workdbs3, workdbs4, workdbs5, workdbs6,
- workdbs7, workdbs8
复制代码
部分删除。
一一由手工删除,不仅繁琐,还易遗漏,出错。
我参照《sed&awk》 编写如下程序来解决此问题:
- #!/bin/ksh
- #transfer -- found the serial "FRANGMENT.*;" and delete it
- #parameter: filenames
- for file
- do
- sed '
- :begin
- /FRAGMENT .*;/{
- s//;/
- b begin
- }
- /FRAGMENT .*/{
- N
- s/FRAGMENT [^;]*\n.*;/;/
- t again
- b begin
- }
- :again
- P
- D' $file
- done
复制代码 |
|