假设我要匹配foo
并bar
在文件中。以下作品:
/foo/{commands}/bar/{commands}
注意:/foo/{commands}
和之间没有分隔符/bar/{commands}
。
以下内容也不错:
/foo/{commands1}{commands2}
{commands2}
每行执行的地方,我省略了模式。
但是,如果我想忽略这些命令怎么办?awk的语法规则是什么?以下内容不起作用:
/foo//bar/
当然,我可以将其编写为/foo/{print}/bar/{print}
,但是我想知道分隔段的分隔符是什么,为什么有时需要而有时又不需要。
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