Estaba escribiendo un script ksh para validar que la columna sea numérica. El patrón de expresiones regulares se define en un archivo de configuración como \d+.\d+
. Pero esto no funciona cuando uso d
el patrón. Sin embargo, [0-9]{1,9}
está funcionando. ¿Alguna idea sobre esto?
- Aquí está la versión de ksh que estoy usando:
$ ksh --version version sh (AT&T Research) 93u+ 2012-08-01
- Fragmento de código para la comparación de patrones. Si proporciono
$col_patt
algo así\d+
, no funcionaría pero[0-9]{1,}
funcionará.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 )
- Aquí está el patrón utilizado:
\d*\.\d+
Respuesta1
Varias utilidades, idiomas, bibliotecas de expresiones regulares/patrones y API admiten diferentes operadores/comodines.
\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