私は二つのファイルAWK列が他の人が行っているときには全く印刷しませんか?
マイawkスクリプトで働いている非常に奇妙な問題を抱えている:
その行が等しい両方のファイルの両方の最初のフィールドに一致させるためのもの。次に、他のフィールドで他の条件を実行し、一致するかどうかを確認します。これは他のすべてのフィールドで正常に動作しているようですが、最初のファイルの2番目のフィールド$ 2には値が設定されません。
#!/bin/awk -f
BEGIN {
FS=OFS=","
total = 0;
}
FNR==NR{
reg[$1] = $1;
reg_s[$2] = $2;
account[$3] = $3;
site_name[$4] = $4;
next;
}
{
if ($1 in reg)
if ((($2 != "Yes") && (reg_s[$2] == "3")) || (($2 == "Yes") && (reg_s[$2] != "3"))) {
print "Status Error";
total++;
}
}
END {
print " - DONE - " total" Errors"
}
どこが間違っていますか?
FILE1:
abcd,3,Paper,go
abcde,3,stapler,staples
abb,0,pencil,sharpener
FILE2:
abcd,Yes,Paper,go
abcde,Yes,stapler,staples
abb,No,pencil,sharpener
それを実行するには:
awk -f myscript.awk file1 file2
あなたは 'reg_s [$ 2] ==" 3 "'をチェックしていますが、 'reg_s [$ 2] = $ 2'配列インデックスとフィールド値の内容は、最初のファイルで設定されたものと同じです。 'reg_s [" Yes "]'はありません。もしあなたが何をしたいのかを説明すれば、おそらく助けになるでしょう。 – karakfa
混乱して申し訳ありません。基本的に、2番目のファイルの$ 2が「はい」で、最初のファイルの$ 2が「3」でない場合は、アクションを実行します。 – yaman
FNR == NRの外にreg_sが存在する必要がありますか? 2番目のフィールドは最初のファイルでは3で、他のフィールドでは3であるためです。 – yaman