首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWK文件多行命令无法工作

AWK文件多行命令无法工作
EN

Stack Overflow用户
提问于 2014-08-01 05:22:25
回答 1查看 123关注 0票数 0

我有一个awk文件get_PV_sql_from_file.awk

代码语言:javascript
复制
#! /bin/awk -f
/^CREATE.*VIEW.*PV_/
{ 
inside_create = 1; print "view found" 
}   

{                               
if(inside_create == 1)      
    {       
    print $0                    
    }                           
}

/.*;$/ 
{               
    if(inside_create == 1){             
        inside_create = 0;  
    }                           
}

当我运行它时:

代码语言:javascript
复制
awk -f get_PV_sql_from_file.awk test_PV_sql.txt

我在每一行中都有“找到视图”的短语:

代码语言:javascript
复制
view found
CREATE  FORCE VIEW "POSC"."P3V_SEC_TREES_V" ("BSASC_ID", "BSASC_S", "LV0_K", "LV0_V", "LV1_K", "LV1_V", "LV2_K", "LV2_V", "LV3_K", "LV3_V", "LV4_K", "LV4_V", "LV5_K", "LV5_V") AS 
view found
  SELECT DISTINCT
view found
 B1.BSASC_ID,
view found
 B2.BSASC_S,
view found
 R_SEC_TREES.LV0_K,
view found
 R_SEC_TREES.LV0_V,
...
etc

但是,如果我将每个命令写成awk文件中的一行:

代码语言:javascript
复制
#! /bin/awk -f
/^CREATE.*VIEW.*PV_/ { inside_create = 1; print "view found" }  

{ if(inside_create == 1) { print $0 } }

/.*;$/ { if(inside_create == 1) { inside_create = 0; } }

这是正确的工程:

代码语言:javascript
复制
view found
CREATE  FORCE VIEW "POSC"."PV_SEC_MODULES_V" ("BSASC_ID", "MODULE", "ACT") AS 
  SELECT DISTINCT
 B1.BSASC_ID BSASC_ID,
 BSASC_PRIVILEGE.GDLN_OR_PRIV_ID MODULE,
 BSASC_PRIVILEGE.R_BSASC_PRIV_KIND ACT
...
etc

为什么会发生这种情况?我在哪里搞错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-01 06:34:26

您需要将开始动作的模式和开口支撑放在同一行上。否则,模式将被视为没有任何操作,因此将执行默认操作,即打印行。然后,下一行上的操作被视为没有模式,这意味着它匹配每一行。因此,编写AWK代码如下:

代码语言:javascript
复制
/^CREATE.*VIEW.*PV_/ { 
    inside_create = 1; print "view found" 
}   

{                               
    if(inside_create == 1)      
    {       
        print $0                    
    }                           
}

/.*;$/ {               
    if(inside_create == 1) {             
        inside_create = 0;  
    }                           
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25073338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档