2015-08-27 4 views
1

Я пытаюсь сопоставить повторяющиеся шаблоны в строках. Я знаю, что могу использовать /^[0-9]{5}$/ хотя бы в perl, но это не работает в awk или nawk (без gawk).awk regex для повторного символа

Любая альтернатива, кроме /^[0-9][0-9][0-9][0-9][0-9]$/?

EDIT:

echo "AAB" > test 

script.awk:

#!/usr/bin/nawk -f 
BEGIN {} 
/^A\{2,2\}/ { print "1"; } 
/^A/ { print "2"; } 
/A\{2,2\}/ { print "3"; } 
/A{2,2}/ { print "4"; } 
END {} 

./script.awk test 

только выход (AWK или наук):

2 
+0

escape '{' и '}' используя обратную косую черту -> '/^[0-9] \ {5 \} $ /'. Это работает для меня с awk 4.1.1 – bro

+2

Какая система вы используете? Первый синтаксис должен поддерживаться 'nawk'. –

+0

SunOS 5.10/Solaris 10, экранирующий {не подходит. – vesperto

ответ

1

по умолчанию AWK на Solaris старый, разбитый awk, который никогда не должен использоваться кем-либо по какой-либо причине. nawk намного лучше, чем/usr/bin/awk, но все еще очень старый, не-POSIX awk, и поэтому не поддерживает интервалы RE. Почти любой другой awk будет работать. В Solaris, если у вас нет и не может установить GNU awk, используйте/usr/xpg4/bin/awk, так как он очень близок к совместимому с POSIX и поддерживает интервалы RE.

 Смежные вопросы

  • Нет связанных вопросов^_^