Не мог соответствовать определенному числу “grep-E”

Здесь я пытаюсь искать числа в пределах от от 0 до 255, но некоторые случайные числа подобраны вместо этого. Примеры:

1335.0.1.234

или

241.92.88.103

Полужирный числа, которые подобраны.

Это число, которое я получаю, имеет число, которое превышает 255, но все еще подобрано, потому что оно видит 1 как автономное число (?). Даже если число не превышает 255, случайные части числа подобран.

Команда, которую я использую:

grep -E '[0-255]' asd.txt
1
задан 27 August 2015 в 20:07

1 ответ

Вы неправильно понимаете регулярные выражения: [0-255] не означает "десятичного числа между 0 и 255", но означает "один из 0, 1, 2 или 5".

Это - корректное регулярное выражение:

\b(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\b

, Если Вы пробуете, необходимо получить следующий вывод:

$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\b' asd.txt
1335.0.1.234
241.92.88.103

(Все числа кроме 1335 были подобраны.)

<час>

Бонусная подсказка: , Если Вы хотите только подобранные числа (без точек и несопоставленных чисел), используйте -o:

$ grep -Eo '\b(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])\b' asd.txt
0
1
234
241
92
88
103
<час>

Другая подсказка: , Если Вы хотите соответствовать допустимым адресам IPv4 (один на строку), используйте следующую команду:

grep -E '^((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]) asd.txt
3
ответ дан 7 December 2019 в 12:43

Другие вопросы по тегам:

Похожие вопросы: