我怎样才能让 awk 评估两个 if 条件为一个?

How can I make nawk evauluate two if conditions as one?

对于数据集:

12345   78945
12345   45678

我需要输出为

12345   45678

长话短说,有时两个值代表同一个对象,这是由于某些高于我的薪资等级的做法。因此,对于表示同一对象的已知值对列表,我需要 awk 从输出中过滤这些值。上面这种情况12345和78945代表的是同一个对象,应该过滤掉。其余行是应引起我注意的错误。

我尝试的代码

cat data | nawk '((!="12345")&&(!="78945"))'

产生一个空集作为输出。因此,要么我在脑海中犯了一个逻辑错误,要么犯了一个语法错误,即 nawk 正在单独评估每个条件,就像写成 cat data | nawk '(!="12345")&&(!="78945")' 一样,因此过滤掉这两个条件,因为第一个条件都失败了。

我确定这只是我不熟悉 nawk 如何解决此类问题。在此先感谢您的帮助。由于某些原因,这必须在 nawk 中完成。

您的示例数据中没有一行 !="12345" 为真,因此没有条件 && 其他任何条件都为真。想想看。这与 awk 无关 - 它是简单的布尔逻辑。

试试这些中的任何一个,以你觉得更清楚的为准:

nawk '(!="12345") || (!="78945")' data
nawk '!((=="12345") && (=="78945"))' data
nawk '(=="12345") && (=="78945"){next} 1' data
nawk '(" ") != "12345 78945"' data
nawk '!/^[ \t]*12345[ \t]+78945([ \t+]|$)/' data

还有 google UUOC 来理解为什么我去掉了 cat data |.