awk if(cond1 || cond2)什么都不过滤[重复]

问题描述 投票:0回答:2

这就是我想要在理论上运行的东西

    awk 'BEGIN {FS=OFS=","}
               {if( $4 != "" || $4 != "Store Number")
               print $2}' $file >>out;

相反,我从$ file获得所有记录(即没有应用条件)

但是,我检查了以下工作:

    awk 'BEGIN {FS=OFS=","}
               {if( $4 != "")
               print $2}' $file >>out;

尝试了大多数措辞的组合,包括!(cond1 || cond2),!〜,if((cond1)||(cond2)),但都没有效果。我在Windows 10 bash中运行awk。

bash awk
2个回答
1
投票
$4 != "" || $4 != "Store Number"

可以失败的唯一字符串是同时是"""Store Number"的字符串!

因为这显然是不可能的,所以它不会过滤任何东西,正如你所看到的那样。

你可能打算使用&&


顺便说一下,如果你使用awk的条件部分,你可以稍微简化你的代码:

BEGIN {FS=OFS=","}
$4 != "" && $4 != "Store Number" {print $2}

0
投票

不包括或不包括b(除非a == b)。

答案:!= a &&!= b

感谢您的快速解答;;是时候刷新我的集合/逻辑了。

© www.soinside.com 2019 - 2024. All rights reserved.