亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問板塊 發(fā)新帖
查看: 2773 | 回復(fù): 10
打印 上一主題 下一主題

帶范圍的模式匹配+增加內(nèi)容,真是頭痛 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2006-06-14 22:32 |只看該作者 |倒序?yàn)g覽
Dear all

    目前有遇到一個(gè)問題,請(qǐng)各位大蝦幫忙

   需求

  1.    UPDATE xxx_file set col1=value1,
  2.                                     col2=value2,
  3.                                     ......
  4.       WHERE.......
  5.      IF SQLCA.sqlcode THEN
  6.          CALL cl_err.....
  7.          ............
  8.      END IF
復(fù)制代碼

我希望能夠找到文件中類似有這樣的語(yǔ)句塊,即UPDATE開頭,UPDATE語(yǔ)句結(jié)束后,立即是IF SQLCA.sqlcode這樣的STATEMENTS BLOCK
1.在IF SQLCA.sqlcode后面加上一行CALL cl_err3(.....)的語(yǔ)句
2.最好可以提取UPDATE語(yǔ)句后面的xxx_file,因?yàn)閏l_err3中我會(huì)用到這個(gè)內(nèi)容
3.最好能MARK住CALL cl_err這行

可能出現(xiàn)的情況UPDATE結(jié)束之后,若不是IF SQLCA.sqlcode的話,這些行就不匹配了
1.我嘗試用sed,但是它的單行匹配,
sed "s:\(^ *\)\(UPDATE *\)\([^ (]*\)\(.*\):\1\2\3\4\n      CALL cl_err3(\"upd\",\"\3\",\"\",\"\",SQLCA.sqlcode,\"\",\"\",1)
目前我僅做到UPDATE后面加cl_err3這樣子,xxx_file我是提取到了
但是問題是沒有CHECK是否有IF SQLCA.sqlcode這樣的判斷
效果

  1.             UPDATE gac_file SET xxx01 = ....,
  2.        CALL cl_err3("upd","gac_file","","",SQLCA.sqlcode,"","",1)  #No.FUN-660081  #我加的一行,當(dāng)然我目前的加法,SQL語(yǔ)句肯定不能執(zhí)行
  3.                                              xxx02 = ....,
  4.                 WHERE gac01 = g_gab01_t AND gac12 = g_gab11_t                  
  5.             IF SQLCA.sqlcode THEN                                               
  6.                 CALL cl_err('gac',SQLCA.sqlcode,0) CONTINUE WHILE               
  7.             END IF
復(fù)制代碼


2.我嘗試用ex命令
ex...
1
/UPDATE/                                                                        
.,/SQLCA.sqlcode/a                                                              
        CALL cl_err3("upd","aaa_file",g_aaa.aaa01,"",SQLCA.sqlcode,"","",1) #No.
.
這種方法的話,a)我無(wú)法提取到update后面的xxx_file
                   b)最終的效果是有些加了cl_err3,有些沒有加cl_err3
因?yàn)閑x我不熟,所以不知道為什么出現(xiàn)這種原因了

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2006-06-15 09:03 |只看該作者
沒人回應(yīng)噢

論壇徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亞冠之浦和紅鉆
日期:2015-06-23 19:10:532015亞冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16賽季CBA聯(lián)賽之山東
日期:2016-01-31 18:25:0515-16賽季CBA聯(lián)賽之四川
日期:2016-02-16 16:08:30程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-06-29 06:20:002017金雞報(bào)曉
日期:2017-01-10 15:19:5615-16賽季CBA聯(lián)賽之佛山
日期:2017-02-27 20:41:19
3 [報(bào)告]
發(fā)表于 2006-06-15 09:10 |只看該作者
俺讀了兩遍,沒看懂你要的是什么,誰(shuí)看懂了再描述一下

論壇徽章:
7
榮譽(yù)版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07獅子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10雙子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
4 [報(bào)告]
發(fā)表于 2006-06-15 09:11 |只看該作者
語(yǔ)句之間有沒有特定的分隔符?
如果是靠語(yǔ)法分析來區(qū)分的,就不好辦了。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2006-06-15 10:44 |只看該作者
目前我們家要對(duì)整個(gè)系統(tǒng)的程序中的報(bào)錯(cuò)信息要翻新
原來的報(bào)錯(cuò)代碼是cl_err('description',錯(cuò)誤代碼,停留秒數(shù))
目前類似在UPDATE/SELECT/INSERT/DELETE(SQL語(yǔ)句后面的報(bào)錯(cuò)信息cl_err)的要變換成cl_err3
即把原來的那行cl_err(....) mark住,mark符為 #
再加上一行cl_err3('sel/upd/ins/del',table_name,key_column1,key_column2,錯(cuò)誤代碼,"","description","",1""


如看懂了上面的話,再看下面的限制
一般什么時(shí)候會(huì)報(bào)錯(cuò)呢,當(dāng)然是SQL語(yǔ)句有出錯(cuò)時(shí),所以我們家現(xiàn)在的語(yǔ)句類似是這樣的:
UPDATE xxx_file set xx=xx,
                                yy=yy..
  WHERE ......
IF SQLCA.sqlcode THEN
    call cl_err(......)
    ......
END IF

所以遇到類似上述的語(yǔ)句塊時(shí),我要在1.mark call cl_err(....)
2.在call cl_err(....) 下面新增一行call cl_err3

如果目前還看得懂的話,請(qǐng)?jiān)倏聪旅?br /> cl_err3('sel/upd/ins/del',table_name,key_column1,key_column2,錯(cuò)誤代碼,"","description","",1""
cl_err3中有很多的參數(shù)
1.sel/upd/ins/del  則要看上面的一句sql語(yǔ)句,來決定填什么的
2.table_name 要看sql語(yǔ)句處理的table是哪個(gè)
3.key_column1,key_column2 目前這個(gè)太難了,暫不處理,理論上我會(huì)去取where中等號(hào)右邊的值,最多為兩個(gè)
4.錯(cuò)誤代碼為原來cl_err中第二個(gè)參數(shù)
5.description為原來cl_err中第一個(gè)參數(shù),目前這個(gè)暫不處理,因?yàn)闀?huì)根據(jù)cl_err中第一個(gè)參數(shù)不同而不同

我原本想用ex來處理,但是這個(gè)命令我不熟,且我提取不到相關(guān)的信息,用sed可以提取原來cl_err中或是SQL語(yǔ)句中的相關(guān)信息,但是目前我處理下來效果也太差
**不知道是不是可以寫c呢?????**

**各位有沒有被我說糊涂了,**
anyway,謝謝各位的關(guān)注

論壇徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亞冠之浦和紅鉆
日期:2015-06-23 19:10:532015亞冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16賽季CBA聯(lián)賽之山東
日期:2016-01-31 18:25:0515-16賽季CBA聯(lián)賽之四川
日期:2016-02-16 16:08:30程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-06-29 06:20:002017金雞報(bào)曉
日期:2017-01-10 15:19:5615-16賽季CBA聯(lián)賽之佛山
日期:2017-02-27 20:41:19
6 [報(bào)告]
發(fā)表于 2006-06-15 11:19 |只看該作者
awk '
/UPDATE/{ac="upd";tname=$2}
/SELECT/{ac="sel";tname=$2}
/INSERT/{ac="ins";tname=$2}
/DELETE/{ac="del";tname=$2}
/IF SQLCA/{pro=1}
/END IF/{pro=0}
pro==1&&/call cl_err/{ print "#mark by awk#",$0;
gsub(/^[^,]*/;"");gsub(/,.*/;"");
print "cl_err3(\047)"ac"\047,"tname",key_column1,key_column2,"$0",\"\",\"description\",\"\",1\"\")"
} ' ur-file

沒測(cè)試,基本思路就是這樣

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2006-06-15 13:49 |只看該作者
gsub這行報(bào)錯(cuò),可否解釋一下
如果去掉該行,我原來程序很多東西都不見了

論壇徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亞冠之浦和紅鉆
日期:2015-06-23 19:10:532015亞冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16賽季CBA聯(lián)賽之山東
日期:2016-01-31 18:25:0515-16賽季CBA聯(lián)賽之四川
日期:2016-02-16 16:08:30程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-06-29 06:20:002017金雞報(bào)曉
日期:2017-01-10 15:19:5615-16賽季CBA聯(lián)賽之佛山
日期:2017-02-27 20:41:19
8 [報(bào)告]
發(fā)表于 2006-06-15 14:17 |只看該作者
awk '
/UPDATE/{ac="upd";tname=$2}
/SELECT/{ac="sel";tname=$2}
/INSERT/{ac="ins";tname=$2}
/DELETE/{ac="del";tname=$2}
/IF SQLCA/{pro=1}
/END IF/{pro=0}
pro==1&&/call cl_err/{ print "#mark by awk#",$0;
gsub(/^[^,]*/,"");gsub(/,.*/,"");
print "cl_err3(\047)"ac"\047,"tname",key_column1,key_column2,"$0",\"\",\"description\",\"\",1\"\")"
}
!(pro==1&&/call cl_err/)
' ur-file

關(guān)鍵是要讀懂,我沒你的數(shù)據(jù),也不太清楚你的細(xì)節(jié)要求,抄過去用JB上是完不了工的

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2006-06-15 21:14 |只看該作者
謝謝waker,慢慢得成型了
目前我把代碼修改成

  1. #!/bin/sh                                                                       
  2. awk '                                                                           
  3. /UPDATE/{ac="upd";tname=$2}                                                     
  4. /SELECT/{ac="sel";tname=$4}                                                     
  5. /INSERT/{ac="ins";tname=$3}                                                     
  6. /DELETE/{ac="del";tname=$3}                                                     
  7. /IF SQLCA/{pro=1}                                                               
  8. /IF STATUS/{pro=1}                                                              
  9. /END IF/{pro=0}                                                                 
  10. pro==1&&/CALL cl_err/{print "#",$0,"  #No.FUN-660115";                          
  11. gsub(/^[^,]*/,"");gsub(/,.*/,"");                                               
  12. print "         CALL cl_err3(\""ac"\",\""tname"\",\"\",\"\",SQLCA\.sqlcode,\"\",
  13. }                                                                              
  14. !(pro==1&&/CALL cl_err/)                                                        
  15. ' sample >try.txt
復(fù)制代碼


原始文件,sample長(zhǎng)成

  1.       INSERT INTO qcs_file VALUES (g_qcs.*)                                    
  2.       IF SQLCA.sqlcode THEN                                                     
  3.          CALL cl_err(g_qcs.qcs01,SQLCA.sqlcode,1)                              
  4.          LET g_success='N'                                                      
  5.       END IF                                                                    
  6.                                                                                 
  7.          UPDATE srg_file SET srg12=g_qcs.qcs01 WHERE srg01=g_qcs.qcs01         
  8.                                                  AND srg02=g_qcs.qcs02         
  9.          IF SQLCA.sqlcode OR SQLCA.sqlerrd[3]=0 THEN                           
  10.             CALL cl_err(g_qcs.qcs01,SQLCA.sqlcode,1)                           
  11.             LET g_success='N'                                                   
  12.          END IF                                                                 
  13.                                                                                 
  14.                SELECT occ02 INTO m_pmc03                                       
  15.                  FROM occ_file                                                  
  16.                 WHERE occ01 = g_qcs.qcs03                                       
  17.                IF STATUS THEN                                                   
  18.                   CALL cl_err(g_qcs.qcs03,'atm-333',0)                          
  19.                   NEXT FIELD qcs03                                             
  20.                END IF                                                           
  21.                                                                                 
  22.             DELETE FROM qct_file                                                
  23.              WHERE qct01 = g_qcs.qcs01
  24.                AND qct02 = g_qcs.qcs02                                          
  25.                AND qct021= g_qcs.qcs05                                          
  26.                AND qct03 = g_qct_t.qct03                                       
  27.             IF SQLCA.sqlcode THEN                                               
  28.                CALL cl_err(g_qct_t.qct03,SQLCA.sqlcode,0)                       
  29.                ROLLBACK WORK                                                   
  30.                CANCEL DELETE                                                   
  31.             END IF
復(fù)制代碼

使用了最上面的代碼后,結(jié)果長(zhǎng)成了

  1.       INSERT INTO qcs_file VALUES (g_qcs.*)                                    
  2.       IF SQLCA.sqlcode THEN                                                     
  3. #          CALL cl_err(g_qcs.qcs01,SQLCA.sqlcode,1)   #No.FUN-660115            
  4.          CALL cl_err3("ins","qcs_file","","",SQLCA.sqlcode,"","",1)  #No.FUN-660
  5.                                                                                 
  6.          LET g_success='N'                                                      
  7.       END IF                                                                    
  8.                                                                                 
  9.          UPDATE srg_file SET srg12=g_qcs.qcs01 WHERE srg01=g_qcs.qcs01         
  10.                                                  AND srg02=g_qcs.qcs02         
  11.          IF SQLCA.sqlcode OR SQLCA.sqlerrd[3]=0 THEN                           
  12. #             CALL cl_err(g_qcs.qcs01,SQLCA.sqlcode,1)   #No.FUN-660115         
  13.          CALL cl_err3("upd","srg_file","","",SQLCA.sqlcode,"","",1)  #No.FUN-660115
  14.                                                                                 
  15.             LET g_success='N'                                                   
  16.          END IF                                                                 
  17.                                                                                 
  18.                SELECT occ02 INTO m_pmc03                                       
  19.                  FROM occ_file                                                  
  20.                 WHERE occ01 = g_qcs.qcs03                                       
  21.                IF STATUS THEN                                                   
  22. #                   CALL cl_err(g_qcs.qcs03,'atm-333',0)   #No.FUN-660115      
  23.          CALL cl_err3("sel","m_pmc03","","",SQLCA.sqlcode,"","",1)  #No.FUN-660115
  24.                                                                                 
  25.                   NEXT FIELD qcs03                                             
  26.                END IF                                                           
  27.                                                                                 
  28.             DELETE FROM qct_file                                                
  29.              WHERE qct01 = g_qcs.qcs01                                          
  30.                AND qct02 = g_qcs.qcs02                                          
  31.                AND qct021= g_qcs.qcs05                                          
  32.                AND qct03 = g_qct_t.qct03                                       
  33.             IF SQLCA.sqlcode THEN                                               
  34. #                CALL cl_err(g_qct_t.qct03,SQLCA.sqlcode,0)   #No.FUN-660115   
  35.          CALL cl_err3("del","qct_file","","",SQLCA.sqlcode,"","",1)  #No.FUN-660
  36.                                                                                 
  37.                ROLLBACK WORK                                                   
  38.                CANCEL DELETE                                                   
  39.             END IF
復(fù)制代碼

我希望最好的效果能夠?yàn)?br />

  1.       INSERT INTO qcs_file VALUES (g_qcs.*)                                    
  2.       IF SQLCA.sqlcode THEN                                                     
  3. #        CALL cl_err(g_qcs.qcs01,SQLCA.sqlcode,1)   #No.FUN-660115              
  4.          CALL cl_err3("ins","qcs_file","","",SQLCA.sqlcode,"","",1)  #No.FUN-660
  5.          LET g_success='N'                                                      
  6.       END IF                                                                    
  7.                                                                                 
  8.          UPDATE srg_file SET srg12=g_qcs.qcs01 WHERE srg01=g_qcs.qcs01         
  9.                                                  AND srg02=g_qcs.qcs02         
  10.          IF SQLCA.sqlcode OR SQLCA.sqlerrd[3]=0 THEN                           
  11. #           CALL cl_err(g_qcs.qcs01,SQLCA.sqlcode,1)   #No.FUN-660115           
  12.             CALL cl_err3("upd","srg_file","","",SQLCA.sqlcode,"","",1)  #No.FUN-
  13.             LET g_success='N'                                                   
  14.          END IF                                                                 
  15.                                                                                 
  16.                SELECT occ02 INTO m_pmc03                                       
  17.                  FROM occ_file                                                  
  18.                 WHERE occ01 = g_qcs.qcs03                                       
  19.                IF STATUS THEN                                                   
  20. #                 CALL cl_err(g_qcs.qcs03,'atm-333',0)   #No.FUN-660115         
  21.                   CALL cl_err3("sel","m_pmc03","","",SQLCA.sqlcode,"","",1)  #No
  22.                   NEXT FIELD qcs03                                             
  23.                END IF
  24.                                                                                 
  25.             DELETE FROM qct_file                                                
  26.              WHERE qct01 = g_qcs.qcs01                                          
  27.                AND qct02 = g_qcs.qcs02                                          
  28.                AND qct021= g_qcs.qcs05                                          
  29.                AND qct03 = g_qct_t.qct03                                       
  30.             IF SQLCA.sqlcode THEN                                               
  31. #              CALL cl_err(g_qct_t.qct03,SQLCA.sqlcode,0)   #No.FUN-660115      
  32.                CALL cl_err3("del","qct_file","","",SQLCA.sqlcode,"","",1)  #No.F
  33.                ROLLBACK WORK                                                   
  34.                CANCEL DELETE                                                   
  35.             END IF
復(fù)制代碼


/)/)
(*.*)

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2006-06-15 21:17 |只看該作者
目前我想取原始cl_err(參數(shù)1,參數(shù)2,參數(shù)3)中參數(shù)2出來,然后放至cl_err3中目前SQLCA.sqlcode的地方
現(xiàn)在因?yàn)槲也粫?huì)取,是被我寫死的
用最上面的代碼,目前樣子已寫出來了,不過格式方面還有差一點(diǎn)

您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP