awk - “&&”在 AWK 编码中实际上意味着 AND 吗?
问题描述
我目前正在从大型数据文件中过滤掉具有特定模式的行。因为行需要满足几个规则,所以我在 awk 中使用了“&&”。但我的印象是它并不完全遵循逻辑 AND。
我的数据看起来像:
Group EB1_D EN1_D EZ1_D LB1_D LN1_D LZ1_D MB1_D MN1_D MZ1_D TB1_D TN1_D TZ1_D AB1_D AN1_D AZ1_D
OG0008871:Down 0.886835651 NA 0.205991042 0.344286962 NA 0.212469765 0.934134739 NA NA 0.087171422 0.144711362 0.002778751 NA NA NA
OG0021381:Down 0.65178744 0.000508521 0.477039947 NA NA NA NA NA 0.826395809 NA NA NA NA NA NA
OG0011803:Up NA NA NA NA NA 0.00734476 NA NA NA 0.458883104 NA NA NA NA NA
OG0015725:Up NA NA NA NA 0.858766006 NA NA NA NA 0.376378076 0.196034543 0.329094645 0.062600211 0.080328374 0.017079806
我想过滤掉 B1_D 大于任何其他值的所有行,所以我使用以下内容(可能不是最实用的,但无论如何它应该可以工作:
awk '$2 > $3 && $2 > $6 && $2 > $7 && $2 > $4 && $2 > $9 && $2 > $10 && $2 > $12 && $2 > $13 && $2 > $15 && $2 > $16 && $5 > $3 && $5 > $6 && $5 > $7 && $5 > $4 && $5 > $9 && $5 > $10 && $5 > $12 && $5 > $13 && $5 > $15 && $5 > $16 && $8 > $3 && $8 > $6 && $8 > $7 && $8 > $4 && $8 > $9 && $8 > $10 && $8 > $12 && $8 > $13 && $8 > $15 && $8 > $16 && $11 > $3 && $11 > $6 && $11 > $7 && $11 > $4 && $11 > $9 && $11 > $10 && $11 > $12 && $11 > $13 && $11 > $15 && $11 > $16 && $14 > $3 && $14 > $6 && $14 > $7 && $14 > $4 && $14 > $9 && $14 > $10 && $14 > $12 && $14 > $13 && $14 > $15 && $14 > $16 END {print $0}'
应用此仅将行 OG0015725:UP 作为输出但是:规则之一是 $11 > $6。11 美元的值为 0.376378076,6 美元的值为 0.858766006。
因此它不应该被选中,但它确实被选中了。我是否可能错误地应用了此代码?奇怪的是 OG0015725:UP 是输入文件的最后一行,在我所有不同的输出文件中都被选中了!
提前感谢您的任何意见。
解决方案
是的,&&
在 awk 条件评估中表示 AND。
您没有正确使用它,您应该执行以下操作:
awk '$1>$2 && $2 > $4{ some action }...' input
你有什么:
awk '$1>$2 && $2 > $4 END{.action...}' input
如果要使用快捷方式检查和打印当前行:
awk '$1>$2 && $2 > $4; END{...}' input
顺便说一句,您的 looooooooong 检查必须有更好的方法。
推荐阅读
- c# - 在 .NET Core 3 中获取 Microsoft.AspNetCore.Hosting.Diagnostics[6] 应用程序启动异常
- c - 如何使用正确的本机调用约定编译 C 扩展?
- javascript - 50% 的时间无法触发 Google Analytics 事件
- reactjs - React - 如何让访问者使用反应开发工具但不能编辑状态和道具
- physics - 规划两艘宇宙飞船之间会合的算法
- sql - 在 postgresql 中使用窗口函数以每行递增的方式显示总和
- c# - 如何在使用 Appium selenium C# 自动化移动应用程序时弹出消息文本?
- matlab - Matlab:选择一个变量名并找到对应的值
- powerbi - Power BI 订阅 .PNG 未显示最新数据
- javascript - 角度扩展运算符无法正常工作?