【发布时间】:2017-02-17 16:20:08
【问题描述】:
对于数据集:
12345 78945
12345 45678
我需要输出是
12345 45678
长话短说,由于某些高于我的工资等级的做法,有时两个值代表同一个对象。因此,对于代表同一对象的已知值对列表,我需要 awk 从输出中过滤它们。在上述情况下 12345 和 78945 代表同一个对象,所以应该过滤掉。其余行是应引起我注意的错误。
我尝试的代码
cat data | nawk '(($1!="12345")&&($2!="78945"))'
产生一个空集作为输出。因此,要么我在脑海中犯了一个逻辑错误,要么是一个语法错误,nawk 正在单独评估每个条件,就像写成 cat data | nawk '($1!="12345")&&($2!="78945")' 一样,因此过滤掉了这两个条件,因为两者都不符合第一个条件。
我确定这只是我不熟悉 nawk 如何解决此类问题。提前感谢您的任何帮助。由于某些原因,这必须在 nawk 中完成。
【问题讨论】:
-
顺便说一句:
nawk是一个抽象,在不同的平台上有不同的含义。最好提一下具体的底层 Awk 实现。 -
wrt
And for reasons, this has to be done in nawk.- 什么原因?如果是因为您使用的是 Solaris - 不要使用 nawk,因为它比 /bin/awk(又名旧的、损坏的 awk)功能更强大,但 nawk 本身已经过时并且是 POSIX 之前的版本。请改用 /usr/xpg4/bin/awk。 -
感谢您的提示。以后我会牢记这一点。