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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2301 | 回復: 5
打印 上一主題 下一主題

可否幫我看一下,我寫的AWK有什么問題,怎么就出不來我要的效果 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2006-09-19 16:16 |只看該作者 |倒序瀏覽
Dear all

  我現(xiàn)在要做一個替換,具體要求是
程序遇到cl_setup,然后在第一個end if處后加一行cl_used....
  程序遇到end main,然后在其上面加一行cl_used
先把代碼貼出

  1. !/bin/sh
  2. if [ $# -lt 1 ];then
  3.    echo "Usage:clused.sh bug_no"
  4.    echo "Ex   :clused.sh 'FUN-660010'"
  5.    exit 1
  6. fi
  7. bug_no=$1
  8. ls *4gl >fgl.lst

  9. while read col
  10. do
  11.   echo $col
  12.   sed '/CALL *cl_used(/d' $col > tmp1.tmp

  13. awk -v BUG=${bug_no} '
  14. {beg=0;pro=0}

  15. /IF.*cl_setup/{pro=1}

  16. pro==1&&/END IF/
  17. {print $0;
  18. print "CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG";
  19. pro=0;
  20. beg=1;
  21. }

  22. /END MAIN/{
  23. print "CALL cl_used(g_prog,l_time,2) RETURNING l_time No.BUG"
  24. print $0;
  25. beg=1;
  26. }

  27. !(beg==1){print $0}
  28. ' tmp1.tmp > ${col}

  29. done<fgl.lst
  30. rm -rf fgl.lst 2>/dev/null
復制代碼

也把范例貼一下,但是目前我發(fā)現(xiàn)上面的SHELL不WORK,


  1. MAIN
  2.    WHENEVER ERROR CALL cl_err_msg_log
  3.   
  4.    IF (NOT cl_setup("AIM")) THEN
  5.       EXIT PROGRAM
  6.    END IF


  7.    CALL p306_tm(0,0)  
  8. END MAIN
復制代碼


還有一問是目前我的BUG這個變量取不到我在command line時傳給它的值,

謝謝各位了

論壇徽章:
0
2 [報告]
發(fā)表于 2006-09-20 09:15 |只看該作者
哎,大蝦幫忙呀

目前我run了一下下面的shell,里面的內(nèi)容竟然成

  1.                                                                                 
  2. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG                           
  3. MAIN                                                                           
  4. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG                           
  5.    WHENEVER ERROR CALL cl_err_msg_log                                          
  6. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG                           
  7.                                                                                 
  8. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG                           
  9.    IF (NOT cl_setup("AIM")) THEN                                                
  10. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG                           
  11.       EXIT PROGRAM                                                              
  12. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG                           
  13.    END IF                                                                       
  14. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG                           
  15.                                                                                 
  16. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG                           
  17.                                                                                 
  18. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG                           
  19.    CALL p306_tm(0,0)                                                            
  20. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG                           
  21. END MAIN                                                                        
  22. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG                           
  23. CALL cl_used(g_prog,l_time,2) RETURNING l_time No.BUG
  24. END MAIN                                                                        
  25.                                                                                 
  26. CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG
復制代碼

我查錯,基本上問題是在
pro==1&&/END IF/
{print $0;
print "CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG";
pro=0;
beg=1;
}
中的print "CALL cl_used(g_prog,l_time,1) RETURNING l_time No.BUG";
可是不明白這句怎么會錯呢

各位路過的,幫忙說明一下吧,謝謝

論壇徽章:
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程序設計版塊每日發(fā)帖之星
日期:2016-06-29 06:20:002017金雞報曉
日期:2017-01-10 15:19:5615-16賽季CBA聯(lián)賽之佛山
日期:2017-02-27 20:41:19
3 [報告]
發(fā)表于 2006-09-20 09:36 |只看該作者
{beg=0;pro=0}

/IF.*cl_setup/{pro=1}

pro==1&&/END IF/

以你的例子數(shù)據(jù)
最后一個判斷永遠為假

論壇徽章:
0
4 [報告]
發(fā)表于 2006-09-20 10:36 |只看該作者
目前測試下來,如你說得一樣,可是我不明白
我的想法是這樣的:
文中第一次出現(xiàn)cl_setup,我則將pro置為1
當pro=1時,且遇到第一個end if,我就在END IF的后面多打印一行啊
然后我就把變量都初始化了,為什么會是我貼出來的效果呀

awk 難道不是一行行這樣分析的嗎?
當一行中滿足pattern了,就做處理,不滿足就不做了

我的理解有誤嗎?

論壇徽章:
0
5 [報告]
發(fā)表于 2006-09-20 11:44 |只看該作者
Dear all

論壇徽章:
0
6 [報告]
發(fā)表于 2006-09-20 11:46 |只看該作者
Dear all

   看來是我寫錯東西了,目前代碼如下就work了

  1. #!/bin/sh                                                                       
  2. if [ $# -lt 1 ];then                                                            
  3.    echo "Usage:clused.sh bug_no"                                                
  4.    echo "Ex   :clused.sh 'FUN-660010'"                                          
  5.    exit 1                                                                       
  6. fi                                                                              
  7. bug_no=$1                                                                       
  8. ls *4gl >fgl.lst                                                               
  9.                                                                                 
  10. while read col                                                                  
  11. do                                                                              
  12.   echo $col                                                                     
  13.   sed '/CALL *cl_used(/d' $col > tmp1.tmp                                       
  14.                                                                                 
  15. awk -v BUG=${bug_no} '                                                         
  16. {beg=0}                                                                        
  17.                                                                                 
  18. /cl_setup/{pro=1}                                                               
  19.                                                                                 
  20. {if (pro==1 && $0~/END IF/){                                                   
  21. print $0;                                                                       
  22. print "   CALL cl_used(g_prog,l_time,1) RETURNING l_time No."BUG;               
  23. pro=0;
  24. beg=1;                                                                          
  25. }                                                                              
  26. }                                                                              
  27.                                                                                 
  28. /END MAIN/{                                                                     
  29. print "   CALL cl_used(g_prog,l_time,2) RETURNING l_time No."BUG;               
  30. print $0;                                                                       
  31. beg=1;                                                                          
  32. }                                                                              
  33.                                                                                 
  34. !(beg==1){print $0}                                                            
  35. ' tmp1.tmp > ${col}                                                            
  36.                                                                                 
  37. done<fgl.lst                                                                    
  38. rm -rf fgl.lst 2>/dev/null

復制代碼


謝謝各位的提醒
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP