синтаксическая ошибка с регулярным выражением в unix - PullRequest
1 голос
/ 26 июля 2011

Я попытался найти регулярное выражение, которое соответствует любому числу от 1 до 999. При использовании хуков я получаю синтаксическую ошибку

(bash: syntax error near unexpected token `(')

и когда я не использую крючки, ничего не происходит.

мое регулярное выражение:

egrep ^([1-9][0-9]?|)$ Numbers

Обновление:

но как я могу заставить его проверить файл, который я хочу, чтобы он проверил, потому что знаю, что могу проверить цифры, если я использую echo, но я должен проверить файл

Ответы [ 3 ]

2 голосов
/ 26 июля 2011

Это должно совпадать с любым числом от 1 до 999. Я добавил {0,2}, что означает совпадение между 0 и 2 повторениями группы символов [0-9].

 ^[1-9][0-9]{0,2}$

Если вы пытаетесьчтобы соответствовать скобкам и символам канала, вам нужно их экранировать:

 ^\([1-9][0-9]{0,2}\|\)$
0 голосов
/ 26 июля 2011

Попробуйте это:

echo $number | grep '^[1-9][0-9]\{0,2\}$'
0 голосов
/ 26 июля 2011

Заключите регулярное выражение в двойные кавычки или избегайте парантезов и каналов с обратной косой чертой.

Например, egrep "^([1-9][0-9]?|)$" или egrep ^\([1-9][0-9]?\|\)$.

Кстати, ваше регулярное выражение кажется нарушеннымКак насчет egrep "^[1-9][0-9]?[0-9]?$"?

...