假设我要匹配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
Run Code Online (Sandbox Code Playgroud)
上面的意思是:
;因此将被视为2个不同的条件。/foo/任何一行为true,则不会提及任何操作,因此将打印该行。/bar/任何一行都为true时,条件也为true,并且没有提及任何动作,因此将打印行。但需要注意的是,如果任何行中都包含两个字符串,那么该行将被打印2次,我相信您可能不希望这样做,因此可以执行以下操作:
或者在单一条件下尝试以下操作:
awk '/foo|bar/' Input_file
Run Code Online (Sandbox Code Playgroud)
或者,如果您需要检查字符串是否在同一行中,请尝试点赞:
awk '/foo/ && /bar/' Input_file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |