のx〜yの真を使用することができます。
それぞれ延長あなたのawkスクリプト:
{ exit (NF==6 && $1~/[1-9][0-9]*/ && $3!="" && $4!="" && $6!="") ? 0 : 1 }
小さなデモ:もちろん
$ cat >good.txt <<'EOF'
1,edname,firstname,lastname,suffix,email
2,edname,firstname,lastname,suffix,email
EOF
$ cat >bad_nr_fields.txt <<'EOF'
> 1,edname,firstname,lastname,suffix
> EOF
$ cat >bad_id.txt <<'EOF'
> A,edname,firstname,lastname,suffix,email
> EOF
$ cat >bad_firstname.txt << 'EOF'
> 1,edname,,lastname,suffix,email
> EOF
$ for FILE in good.txt bad_nr_fields.txt bad_id.txt bad_firstname.txt; do
> echo $FILE":"
> if awk -F, '{ exit (NF==6 && $1~/[1-9][0-9]*/ && $3!="" && $4!="" && $6!="") ? 0 : 1 }' "$FILE"; then echo "good"
> else echo "bad"
> fi
> done
good.txt:
good
bad_nr_fields.txt:
bad
bad_id.txt:
bad
bad_firstname.txt:
bad
$
、私は一致する必要がありid
ため、どの特定の構文あなたの番号がわかりません。私の場合、「0」で始まらない10進整数のパターンを使用しました。 (これには数字「0」も含まれません)