首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历字段,只打印那些匹配的正则表达式。

遍历字段,只打印那些匹配的正则表达式。
EN

Stack Overflow用户
提问于 2016-04-27 10:04:20
回答 1查看 957关注 0票数 0

我很难让它起作用:

代码语言:javascript
复制
awk  -F ";" '{for(i=1; i < NF;i++) $i ~ /^_.*/ {print $i}}'

我想迭代所有字段(记录可以有7-9),并且只打印那些以_开头的字段,除了上面的行给我打印语句时的语法错误,如果我省略了{print $i},我就得不到任何输出。

怎样才能正确地做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-27 10:05:39

你错过了一个if

代码语言:javascript
复制
awk  -F ";" '{for(i=1; i < NF;i++) if($i ~ /^_.*/) {print $i}}'

awk程序的结构是condition { action },但是您目前拥有的都在一个动作块中(默认情况下条件为真)。在操作块中,if不是隐式的。

顺便说一句,模式中的.*是多余的;您还可以使用/^_/来匹配以_开头的任何字符串。

注意事项:由于字段是1-索引的,所以右循环条件很可能是i <= NF。如果您确信最后一个字段是不必要的,条件i < NF将完成此工作。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36886614

复制
相关文章

相似问题

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