![Проблема с шаблоном регулярного выражения для проверки цифр в ksh](https://rvso.com/image/192233/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0%20%D1%81%20%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%BC%20%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8%20%D1%86%D0%B8%D1%84%D1%80%20%D0%B2%20ksh.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
— оператор регулярных выражений Perl, который соответствует десятичной цифре (обычно любой из 0123456789
, но при некоторых условиях может соответствовать другим десятичным цифрам (в Unicode их сотни, например 0123456789014 ... оптово-розничная торговля ෮෯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩��������������������������������������������� Лучший способ заполнить пробел Свободное использование ᅠ ... ꧓꧔꧕꧖꧗꧘꧙꧰꧱꧲꧳꧴꧵꧶꧷꧸꧹꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙꯰꯱꯲꯳꯴꯵꯶꯷꯸꯹0123456789