値セットを一致させる awk 正規表現

値セットを一致させる awk 正規表現

awk正規表現の一致に問題があります。特定の列を正規表現パターンと一致させようとしています(\"\.\"|0|1)。この列には、"."または値のみを含めることができます01しかし、私の正規表現パターンは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

"."パターンが(引用符を含む)または正確に一致するようにするには、パターンがまたは等でなければなりません01^("\."|[01])$^("[.]"|[01])$^("\."|0|1)$

ただし、次のように-vパターンを渡すときawkawk\-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 ")$" {...}'

(数字であると予想されるため、まだ-vforを使用しているためバックスラッシュはありません。)n

上記(を参照してください)。初めてでも終わりでも^x|y$xy

おすすめ記事