Как использовать sed, чтобы заменить все ips в файле, если первые 3 октета совпадают - PullRequest
0 голосов
/ 27 августа 2018

Ubuntu 16.04 с GNU bash, версия 4.4.0

Мне нужно опубликовать свой dmesg, но перед этим я хочу удалить все ips назначения и заменить их на xxx.xxx.xxx.xxx

Первые 3 октета одинаковы, но последний октет отличается следующим образом:

пример: DST = 123.12.12.145

sed -i 's/DST=123.12.12.???/DST=xxx.xxx.xxx.xxx/g' filename

1 Ответ

0 голосов
/ 27 августа 2018

Вы можете использовать

sed -i -E 's/DST=123\.12\.12\.[0-9]{1,3}/DST=xxx.xxx.xxx.xxx/g' file

См. онлайн-демонстрацию

Обратите внимание, что . символов следует экранировать, если вам нужно сопоставить буквенные точки.

Шаблон, совместимый с [0-9]{1,3} POSIX ERE (активируется с помощью -E), будет соответствовать 1, 2 или 3 цифрам.

Чтобы убедиться, что вы соответствуете только 3 цифрам в конце, за которыми не следуетдругие цифры, и что вы соответствуете DST, а не ADST, вы можете попробовать добавить границы слов, \< и \>:

's/\<DST=123\.12\.12\.[0-9]{1,3}\>/DST=xxx.xxx.xxx.xxx/g'
   ^^                           ^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...