`and` 和 `or` 在一个 awk 命令中的多个条件

use*_*907 4 bash awk

我试图在 awk 中使用多个“AND”和“OR”条件,但它没有给我想要的输出。相反,它不会读取&&我在时间“030000”时给出的最后一个条件。

awk -F, '{if(substr($2,1,3)=="301" && $15=="996" || $15=="429" && $5>=030000 && $5<=035000) print $2"|"$15"|"$5}' 2017020* | head -10

3014241320|996|235939
3017943809|996|235953
Run Code Online (Sandbox Code Playgroud)

hek*_*mgl 5

看起来您错过了OR操作周围的括号。它应该是:

if(substr($2,1,3)=="301" && ($15=="996" || $15=="429") && $5>=030000 && $5<=035000) ...
Run Code Online (Sandbox Code Playgroud)

请参阅布尔代数