LINUX.ORG.RU

Точка соответствует любому символу. Чтобы она была точкой, её надо экранировать:

127\.0\.0\.0
Thetan ★★★
()
$ grep -F "127.0.0.1" tesgrep
# или
$ fgrep "127.0.0.1" tesgrep

Откуда взялся 127-0-0-1?

grep по умолчанию работает с регулярными выражениями, где точка совпадает с любым символом.

xaizek ★★★★★
()

Используй одинарные кавычки.

anonymous
()
Ответ на: комментарий от targitaj

А, не, я бака. Не работают они.

anonymous
()
Ответ на: комментарий от xaizek

grep -F «127.0.0.1» tesgrep

Так себе совет, ибо:

$ echo 9127.0.0.11 | grep -F "127.0.0.1"
да и кавычки только дополнительно смутят, ибо ничего не меняют. Лучше:
grep -w 127\.0\.0\.1
te111011010, к вопросу, почему плохо что-то изучать по ЛОР-у.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)

Так вот вы какие, девопсы.

anonymous
()
Ответ на: комментарий от te111011010

Так а что в этом плохого?

То что это решение никак не подходит для произвольного IPv4, где при поиске 1.2.3.4 будет находить 11.2.3.44 и так далее.

Это как раз ожидаемое поведение.

Задачи, где вышеназванное наоборот нужно может и бывают, но чтобы не было потом больно, когда окажется, что в задаче вам всё равно что на конце 1.2.3.*, но не всё равно, что в начале, то надо сразу писать нормальные регексы в grep. Это не даст развиться плохим привычкам и ускорит реюзанье уже готового своего кода.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Кавычки из ОП. Да и не нанимался я писать как IP-адреса матчить наилучшим образом, а ответил на конкретный вопрос.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

а ответил на конкретный вопрос

Да ничего страшного не произошло, просто не помешало бы добавить. И ладно бы я тут наваял большой шелл-скрипт, у меня бы не заржавело, но ведь всего-то заменить -F на -w, точки заэскейпить и сразу будет чуть правильнее.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 2)

Ну основы хоть надо знать.

anonymous
()
Ответ на: комментарий от vodz

То что это решение никак не подходит для произвольного IPv4, где при поиске 1.2.3.4 будет находить 11.2.3.44 и так далее.

Переходите тогда сразу к следующему этапу выдуманной вами задачи: 275.275.275.275.

whoisyou
()
Ответ на: комментарий от whoisyou

Переходите тогда сразу к следующему этапу выдуманной вами задачи: 275.275.275.275.

У вас плохо с логикой, но типичненькое желание похамить. Если в тексте может встретиться что-то похожее на IPv4, то никакой grep не поможет, ибо и 127.0.0.1 тоже может логически означать не адрес, а, например, имя файла.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от vodz

Я клоню к тому, что у ОП явная определенная проблема. И не надо озадачиваться эскалацией изначального конкретного вопрос по грепу к задаче валидации регулярками входных данных. Унесет не туда.

whoisyou
()
Ответ на: комментарий от whoisyou

Я клоню к тому,

Нет, вы возражаете ради возражения. Что непонятного в моём объяснении, почему я написал комментарии в этот топик? Вы знаете значение слова «лучше» и разницу, скажем, со словом «правильно», ну или что означает «плохая привычка»?

vodz ★★★★★
()
Ответ на: комментарий от vodz

Для начала вы поймите что же лучше, логичнее и быстрее написать в рамках задачи ОП:

grep -F «127.0.0.1» tesgrep

или же

grep -w 127.0.0.1

Странно, что вы еще не докатились до вида

\b127\.0\.0\.1\b

whoisyou
()
Ответ на: комментарий от whoisyou

Для начала вы поймите что же лучше, логичнее и быстрее написать в рамках задачи ОП:

Дядя. Я не должен войти в ваше положение, когда вам надо выкрутиться, почему вам так захотелось похамить. Да, я опирался на свой опыт, который говорит, что в большинстве случаев у ТСа задача вполне может быть вовсе не о 127.0.0.1, который взят ради примера, либо просто завтра перерасти в произвольный адрес из аргумента вызова. Прежде чем хамить, стоит вчитываться в комменты, я именно и предлагал с эскейпингом точек и 127\.0\.0\.1 никак не может быть 275

vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.