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
奇妙なことではありません。ただ使用してください>
。