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

标签 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

最佳答案

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

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

参见 boolean algebra .

关于bash - 一个 awk 命令中的 `and` 和 `or` 的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42096063/

相关文章:

linux - 使用 bash 脚本比较两个文件

wordpress - 使用 AWK 安全地搜索和替换 Wordpress SQL-Dump 中的 URL

Linux 在同一个 CSV 文件中将一列拆分为两个不同的列

linux - Bash:如何将类似数组的字符串转换为数组

bash - 排序变量

linux - 在 Linux 中从文件中删除行,完全匹配

bash - 根据输出将进程输出存储在文件中 (BASH)

mysql - 具有多个分隔符的 AWK

linux - Bash 或 Awk 脚本合并 X 个字段匹配的行,同时在不匹配的字段中创建范围

linux - 附加到与特定模式匹配的进程的文件列表