ksh での数字検証の正規表現パターンの問題

ksh での数字検証の正規表現パターンの問題

列が数値であることを検証する ksh スクリプトを書いていました。 正規表現パターンは、 のような構成ファイルで定義されています\d+.\d+。 しかし、パターンを使用すると、これは機能しませんd。 ただし、[0-9]{1,9}は機能します。 これについて何か知見はありますか?

  • 私が使用している ksh バージョンは次のとおりです。
    $ ksh --version
      version         sh (AT&T Research) 93u+ 2012-08-01
    
  • パターン比較のコードスニペット。私が提供した場合$col_patt\d+動作しませんが、[0-9]{1,}動作します
    val=$(awk -F "$sep" -v n="$col_pos" -v m="$col_patt" 'NR!=1 && $n !~ "^" m "$" {
                             printf "%s:%s:%s\n", FILENAME, FNR, $n > "/dev/stderr"
                             count++
                           }
                           END {print count+0}' "$cp_input" 2>> $script_path/errors_${file_name_patt}.log
                           )
    
  • 使用されるパターンは次のとおりです。\d*\.\d+

答え1

さまざまなユーティリティ、言語、正規表現/パターン ライブラリ、API がさまざまな演算子/ワイルドカードをサポートしています。

\d0123456789は、10進数の数字(通常は のいずれかですが、条件によっては他の10進数の数字(Unicodeには何百もの数字があります))に一致するPerl正規表現演算子です。0123456789٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹րցւփքօֆּ ...聖書の言葉෮෯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩၀၁၂၃၄၅၆၇၈၉႐႑႒႓႔言語よろしくお願いいたします᱇᱈᱉᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉꧐꧑꧒ ꧓꧔꧕꧖꧗꧘꧙꧰꧱꧲꧳꧴꧵꧶꧷꧸꧹꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙꯰꯱꯲꯳꯴꯵꯶꯷꯸꯹0123456789

関連情報