Regex-Musterproblem für die Ziffernvalidierung in KSH

Regex-Musterproblem für die Ziffernvalidierung in KSH

Ich habe ein KSH-Skript geschrieben, um zu überprüfen, ob die Spalte numerisch ist. Das Regex-Muster ist in einer Konfigurationsdatei wie definiert \d+.\d+. Aber das funktioniert nicht, wenn ich ddas Muster verwende. [0-9]{1,9}Funktioniert jedoch. Irgendwelche Erkenntnisse dazu?

  • Hier ist die KSH-Version, die ich verwende:
    $ ksh --version
      version         sh (AT&T Research) 93u+ 2012-08-01
    
  • Codeausschnitt für den Mustervergleich. Wenn ich es so angebe, $col_pattwie \d+es nicht funktionieren würde, aber [0-9]{1,}es wird funktionieren
    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
                           )
    
  • Hier ist das verwendete Muster:\d*\.\d+

Antwort1

Verschiedene Dienstprogramme, Sprachen, Regex-/Musterbibliotheken und APIs unterstützen unterschiedliche Operatoren/Platzhalter.

\dist ein Perl-Regex-Operator, der eine Dezimalstelle abgleicht (im Allgemeinen alle von 0123456789, kann aber unter bestimmten Bedingungen auch auf andere Dezimalstellen abgleichen (es gibt Hunderte in Unicode, wie zum Beispiel 0123456789٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹߀߀߁߂߃߄߅߆߇߈߉०१२३४५६७८९০১২৩৪৫৬৭৮৯੦੧੨੩੪੫੬੭੮੯૦૧૨૩૪૫૬૭૮૯୦୧୨୩୪୫୬୭୮୯௦௧ ௨௩௪௫௬௭௮௯౦౧౨౩౪౫౬౭౮౯೦೧೨೩೪೫೬೭೮೯൦൧൨൩൪൫൬൭൮൯෦෧෨෩෪෫෬෭ ෮෯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩ ၀၁၂၃၄၅၆၇၈၉႐႑႒႓႔ ႕႖႗႘႙០១២៣៤៥៦៧៨៩᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙᪀ ᪁᪂᪃᪄᪅᪆᪇᪈᪉᪐᪑᪒᪓᪔᪕᪖᪗᪘᪙᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹᱀᱁᱂᱃᱄᱅᱆ ᱇᱈᱉᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉꧐꧑꧒ ꧓꧔꧕꧖꧗꧘꧙꧰꧱꧲꧳꧴꧵꧶꧷꧸꧹꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙꯰꯱꯲꯳꯴꯵꯶꯷꯸꯹0123456789

verwandte Informationen