awk正規表現の一致に問題があります。特定の列を正規表現パターンと一致させようとしています(\"\.\"|0|1)
。この列には、"."
または値のみを含めることができます0
。1
しかし、私の正規表現パターンはawkでは一致しませんが、列のデータは"."
.どんなアイデアがありますか? ?
パスワード
awk -F "$delimitter" -v n="$column" -v m="$pattern" 'NR!=1 && $n !~ "^" m "$" {
printf "%s:%s:%s\n", FILENAME, FNR, $n > "/dev/stderr"
count++
}
END {print count+0}' input.txt 2>> errors.log
ベストアンサー1
"."
パターンが(引用符を含む)または正確に一致するようにするには、パターンがまたは等でなければなりません0
。1
^("\."|[01])$
^("[.]"|[01])$
^("\."|0|1)$
ただし、次のように-v
パターンを渡すときawk
awk
\
-F x
-v FS=x
この問題は存在しないため、ENVIRON
シェルからランダムな文字列を渡すことをお勧めします。awk
だから:
pattern='"\."|0|1'
PATTERN=$pattern DELIMITER=$delimiter awk -v n="$n" '
BEGIN {FS = ENVIRON["DELIMITER"]; m = ENVIRON["PATTERN"]}
$n ~ "^(" m ")$" {...}'
(数字であると予想されるため、まだ-v
forを使用しているためバックスラッシュはありません。)n
上記(
を参照してください)
。初めてでも終わりでも^x|y$
。x
y