首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AWK:使用正则表达式缩短了if-then-else

AWK:使用正则表达式缩短了if-then-else
EN

Stack Overflow用户
提问于 2013-01-23 19:34:18
回答 2查看 11.7K关注 0票数 16

以下AWK格式:

代码语言:javascript
复制
/REGEX/ {Action}

如果当前行与REGEX匹配,将执行Action

有没有办法添加一个else子句,如果当前行与正则表达式不匹配,就会执行该子句,而不显式地使用if-then-else,如下所示:

代码语言:javascript
复制
/REGEX/ {Action-if-matches} {Action-if-does-not-match}
EN

回答 2

Stack Overflow用户

发布于 2013-01-23 22:30:47

还有next

代码语言:javascript
复制
/REGEX/ {
    Action
    next # skip to the next line
}
{ will only get here if the current line does *not* match /REGEX/ }
票数 14
EN

Stack Overflow用户

发布于 2013-01-23 20:45:16

你可以做一个“小把戏”。正如您所知道的,AWK尝试将输入按顺序匹配到每个正则表达式,以执行其代码块。

如果$1为"1",则此代码执行第二个块,否则执行第三个块:

代码语言:javascript
复制
awk '{used = 0} $1 == 1 {print $1" is 1 !!"; used = 1;} used == 0 {print $1" is not 1 !!";}'

如果输入为:

代码语言:javascript
复制
1
2

它打印:

代码语言:javascript
复制
1 is 1 !!
2 is not 1 !!
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14478722

复制
相关文章

相似问题

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