awk ファイルのヘルスチェック。 awk csvファイルでnull /欠落値を確認する

awk ファイルのヘルスチェック。 awk csvファイルでnull /欠落値を確認する

単純なファイル整合性チェックスクリプトを作成しようとしています。 ID、edname、名前、姓、サフィックス、電子メールを含む12個のCSVファイルを含むディレクトリがあります。

私は最初のフィールドに数字が含まれていて空でないことを確認するためにawkスクリプトを書くのが好きです。フィールド番号3、4、6は空ではなく、ファイルには6つ以上の6つのフィールドが含まれています。これらの条件がすべてtrueの場合は何も起こりませんが、そのいずれかが失敗すると、ファイル名は.badに変更されます。 。これは私が持っているものですが、列4,6の欠落値を取得できません。

for f in *.csv; do 
  awk -F, '!(NF==6 && $1+0==$1 && $3$4$6!=""){f=1; exit} END{exit f}' "$f" || mv "$f" "$f".bad;
done

ベストアンサー1

Steeldriverがコメントで指摘したように、3つのフィールドのうちの1つが空でない場合、3番目のテストはtrueになります。私はあなたが実際に次のようなことをしたいと思います。

for f in *.csv; do 
  awk -F, '!(NF==6 && $1+0==$1 && $3!="" && $4!="" && $6!=""){f=1; exit} 
            END{exit f}' "$f" || mv "$f" "$f".bad;
done

おすすめ記事