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는 다양한 연산자/와일드카드를 지원합니다.

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

관련 정보