Эффективный поиск IP-адресов с помощью регулярных выражений - PullRequest
1 голос
/ 24 мая 2019

Я хотел бы найти наиболее эффективное регулярное выражение для поиска трех IP-адресов в одном поиске, но я не уверен, существует ли более эффективный (более быстрый) синтаксис, который я мог бы использовать.

Я пытался искать их по одному адресу за раз, но мне любопытно, есть ли более быстрый способ.

zgrep -a -i  192\.168\.1\.(10|23|34) *.* >> Results.txt

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

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Идет быстрее (возможно, удаление -a и -i будет иметь значение, idk), но это будет более точным, поскольку позволит избежать ложных совпадений с более длинными строками, которые содержат ваши целевые IP-адреса в качестве подстрок:

zgrep -E '(^|[^0-9])192\.168\.1\.(10|23|34)([^0-9]|$)' file

если это не проблема, то это будет быстрее:

printf '192.168.1.10\n192.168.1.23\n192.168.1.34\n' | zgrep -F -f- file
0 голосов
/ 24 мая 2019

Снятие флага игнорирования -i может сделать его быстрее.Для фиксированных совпадений строк, таких как 3 возможных совпадения в вашем примере, grep -F или grep -f также полезны.

Вы также можете использовать sift, если у вас очень большое значениефайлы.

...