我正在编写一个 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