awk 问题:“if 列条件”替换了列条目!

awk 问题:“if 列条件”替换了列条目!

我正在尝试掌握 awk。

假设我有一个输入:

this header
fred blah 1 blank
fred blah 1 blank
huh blah 2 blank
fred blah 3 blank
fred blah 3 blank

在我使用以下 awk 脚本之后,

#!/usr/bin/awk -f
{
    if ( NF <=2 ) {
            print $0
    };
    if ( NF>=3 && $3=1)
     {
            print $0
    }
}

我期望得到这个输出:

this header
fred blah 1 blank
fred blah 1 blank

但我得到了这个输出:

this header
fred blah 1 blank
fred blah 1 blank
huh blah 1 blank
fred blah 1 blank
fred blah 1 blank

其中 $3 已转化为条件。

为什么会出现这种情况?

如何调整 awk 脚本以获得我期望的输出?

答案1

不要误会

a = b

a == b

即使进行if ( )测试,也a = b将 b 的值设置为 a 。 (即使 a 是$3)。

你应该写:

$3 == 1

相关内容