Причина, по которой ваше регулярное выражение не работает, заключается в том, что в расширенном синтаксисе регулярного выражения токен \d
соответствует букве d
, а не цифре.Вместо этого используйте класс символов [0-9]
.
Также \w
соответствует цифрам и буквам, так что вы, вероятно, не захотите использовать его здесь.Используйте класс символов [A-Za-z]
для сопоставления букв в AZ или az.
Я изменил *
на +
, потому что, вероятно, вы хотите по крайней мере одну букву перед числом.+
означает «один или более», тогда как *
означает «ноль или более».
Наконец, вы можете подумать о том, что должно произойти, если вы увидите 5-значное число.Ваше регулярное выражение в настоящее время принимает его, потому что 5-значное число начинается с 4-значного числа.
В заключение попробуйте следующее:
egrep '[a-zA-Z]+[0-9]{4}' *.txt