![ksh의 숫자 유효성 검사에 대한 정규식 패턴 문제](https://rvso.com/image/192233/ksh%EC%9D%98%20%EC%88%AB%EC%9E%90%20%EC%9C%A0%ED%9A%A8%EC%84%B1%20%EA%B2%80%EC%82%AC%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%A0%95%EA%B7%9C%EC%8B%9D%20%ED%8C%A8%ED%84%B4%20%EB%AC%B8%EC%A0%9C.png)
열이 숫자인지 확인하기 위해 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