2

Мы запускаем новый прокси-сервер на работе и имеем список доменов, которые должны быть заблокированы; список загружается с внешнего сайта.

Чтобы разместить их в формате Squid , мы должны добавить . в начало строки, которую мы сейчас настроили, просто /bin/sed -i 's/^/./' $file

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

Я больше играл с sed и думаю, что это должно сработать, но это не так:

sed '/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/s/^\.//g'

Может кто-нибудь либо подсказать, как мне убрать ведущий . из IP-адресов, или даже измените первую команду, чтобы не добавлять . на IP-адреса?

Вот список примеров доменных имен данных после . был добавлен в начало каждой строки:

.216.32.68.172
.216.32.68.173
.216.32.68.188
.216.32.90.27
.216.32.90.28
.216.32.94.117
.21ace.com
.21publish.com
.21wuxia.com
.222z.net
.22dakika.org
.23-net.org
.23zone.de
.244.120.232.72.static.reverse.ltdomains.com
.24hourcafe.biz.ly

1 ответ1

2

Вы были очень близки, просто убегайте от символов {} .

Это будет положить . перед всеми шаблонами, которые не соответствуют IP-адресу:

sed '/^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/! s/^/./g' file

Это удалит все ведущие . перед ip адресами:

sed '/^.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/ s/^.//g' file2

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .