awk問題:「列条件の場合」が列項目を置き換えます!

awk問題:「列条件の場合」が列項目を置き換えます!

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 = bb値はaに設定されます。 (aがある場合でも$3)。

次のように書く必要があります。

$3 == 1

おすすめ記事