Совпадение цифр в [g]awk
Я в тупике! Попытка написать регулярное выражение awk для сопоставления строки с 11 цифрами.
Я пробовал:
if (var ~ /^[0-9]{11}$/ )
if (var ~ /^([0-9]){11}$/ )
if (var ~ /^([0-9]{11})$/ )
if (var ~ /^[0-9]{11}/ ) # altho I really do need to check the whole str
if (var ~ /[0-9]{11}/ )
Если я использую это....
if (var ~ /^[0-9]+/ )
Тогда я получаю совпадение - но мне нужно проверить ровно 11 цифр.
3 ответа
Решение
Вы описали свою проблему, но не сообщили нам свою версию awk. Это важная информация.
но это может работать для вашего случая:
if (var ~ /^[0-9]+$/ && length(var)==11)
Если мы знаем версию, может быть более простое решение.
Если вы пытаетесь сопоставить ровно 11 последовательных цифр где-нибудь в строке:
Используя тестовый файл:
hi12345678910
hi1234
Windows-версия командной строки awk:
awk --posix "{ if ($1 ~ /[0-9]{11}/) print}" testfile.txt
Это напечатано:
hi12345678910
Doh - забыл RTM:
Interval expressions are only available if either --posix or
--re-interval is specified on the command line.