Совпадение цифр в [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.
Другие вопросы по тегам