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

おすすめ記事