У меня возникают проблемы с получением моих IP-адресов с сервера моего сайта, выходящего из системы среди множества других данных в журнале сервера. Прежде чем взломать Excel, я знаю, что есть способ сделать это, потому что я обнаружил противоположное тому, что хотел, - удаление IP-адресов из AWS:
cat web.log | awk '{$1=$2=$3=""}1' > web-no-ip.log
Пошаговая инструкция или шпаргалка для такого рода вещей было бы замечательно.
Я предполагаю, что IP-адреса имеют типичный формат X.X.X.X
где X
находится между [0,255]. Зная это, grep отлично справляется со своей задачей:
grep -oP '(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])(\.(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){3}' filename.txt
(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])
будет соответствовать любому числу от 0 до 255, включая ведущие нули - например, 0, 255, 019 и т. д. Однако, как написано, он будет соответствовать таким вещам, как 1.1.1.1.5
(пять октетов). Это также не отслеживает адреса IPV6.
Если вы ожидаете, что журналы будут содержать ТОЛЬКО допустимые IP-адреса, которые выглядят как X.X.X.X
, и мы можем предположить, что X
не будет недействительным, вы можете использовать более простое выражение:
grep -oP '\d{1,3}(\.\d{1,3}){3}' filename.txt