当前位置:  开发笔记 > 编程语言 > 正文

一行中有多个awk模式匹配

如何解决《一行中有多个awk模式匹配》经验,为你挑选了1个好方法。

假设我要匹配foobar在文件中。以下作品:

/foo/{commands}/bar/{commands} 注意:/foo/{commands}和之间没有分隔符/bar/{commands}

以下内容也不错:

/foo/{commands1}{commands2}{commands2}每行执行的地方,我省略了模式。

但是,如果我想忽略这些命令怎么办?awk的语法规则是什么?以下内容不起作用:

/foo//bar/

当然,我可以将其编写为/foo/{print}/bar/{print},但是我想知道分隔段的分隔符是什么,为什么有时需要而有时又不需要。



1> RavinderSing..:

awk如果我们提及而不是提及任何动作,regexp则适用action于this的方法,/..../因此当condition为TRUE时,默认情况下将打印行。如果您要将其放入2个不同的语句中,请尝试如下操作:

awk '/foo/;/bar/'  Input_file

上面的意思是:

    由于它们与它们隔离,;因此将被视为2个不同的条件。

    如果/foo/任何一行为true,则不会提及任何操作,因此将打印该行。

    /bar/任何一行都为true时,条件也为true,并且没有提及任何动作,因此将打印行。

但需要注意的是,如果任何行中都包含两个字符串,那么该行将被打印2次,我相信您可能不希望这样做,因此可以执行以下操作:

或者在单一条件下尝试以下操作:

awk '/foo|bar/'  Input_file

或者,如果您需要检查字符串是否在同一行中,请尝试点赞:

awk '/foo/ && /bar/'  Input_file

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有