我正在尝试掌握 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