awkのIF条件の正規表現

awkのIF条件の正規表現

awk次のスクリプトファイルがあります。if文字列に少なくとも1つの文字が含まれていることを確認するには、ステートメントに別の条件を追加する必要があります。現在の明細にif条件を追加するにはどうすればよいですか?

必須正規表現条件:[[ "$1" =~ [A-Za-z] ]]

BEGIN { FS = ";"; counter=0}

{ 
 if ((length($1) != 10 && length($1) != 12))
   { 
    counter++
    print counter, $1;
    if ($counter -gt 2){
        print "Invalid input file";
        exit;
    }    
   }
}

公開したのと同じ条件を使用するとエラーが発生します。条件を追加するには?

答え1

実際に正規表現を追加する方法を示していないので、同じ形式を使用しているようです=~ [A-Za-z]。それは動作しません。各言語には独自の正規表現一致構文があります。ではawk形式が$target ~ /$regex/あるためです$1 ~ /[A-Za-z]/

BEGIN { FS = ";"; counter=0}

{ 
 if (length($1) != 10 && length($1) != 12 && $1 ~ /[A-Za-z]/)
   { 
    counter++
    print counter, $1;
    if (counter > 2){
        print "Invalid input file";
        exit;
    }    
   }
}

また、 はawk記号$を使用して表示します。フィールド、いいえ変わりやすい。したがって、$counterと評価されるフィールド番号ですcounter。そうであれば、2番目のフィールドの値にcounterなり2ます。$counterそしてこれは-gt奇妙なことではありません。ただ使用してください>

関連情報