синтаксическая ошибка с регулярным выражением в unix

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

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

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

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

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

Обновить:

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

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

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

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

  ^\([1-9][0-9]{0,2}\|\)$ 

Примените регулярное выражение в двойных кавычках или избежите скобок и труб с обратной косой чертой.

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

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

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

 echo $number | grep '^[1-9][0-9]\{0,2\}$'