
Я писал скрипт 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
— оператор регулярных выражений Perl, который соответствует десятичной цифре (обычно любой из 0123456789
, но при некоторых условиях может соответствовать другим десятичным цифрам (в Unicode их сотни, например 0123456789014 ... оптово-розничная торговля ෮෯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩��������������������������������������������� Лучший способ заполнить пробел Свободное использование ᅠ ... ꧓꧔꧕꧖꧗꧘꧙꧰꧱꧲꧳꧴꧵꧶꧷꧸꧹꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙꯰꯱꯲꯳꯴꯵꯶꯷꯸꯹0123456789