2015-03-03 3 views
2

Ниже приведена моя текущая команда с выходом. Проблема состоит в том, что строка начинается с 2. Как я могу включить только строки, начинающиеся с 4-9?Regex: Соответствующие цифры, начинающиеся с 4-9?

grep -o -P '(?:(?<!\d)\d{8}(?!\d))' * | sort -u 
20100101 
71160868 
71161452 

Источник grep - это электронное письмо, поэтому его довольно грязно, чтобы публиковать здесь.

+2

Регулярное выражение для 4-9 является '[4-9]', если это то, что вы просите – MightyPork

+0

Да, я знаю это, но я не уверен, что это нужно делать в моем регулярном выражении. –

ответ

4

Вы можете использовать:

grep -oP '(?:(?<!\d)[4-9]\d{7}(?!\d))' * | sort -u 

[4-9] будет соответствовать только если первая цифра между 4 и 9 следуют любые 7 цифр.

+0

Это сработало, но почему изменение {7}? –

+2

Поскольку первая цифра '\ d {8}' теперь совпадает с '[4-9]'. В противном случае вы получите 9-значные цифры. – MightyPork