Измените текст определенного поля внутри двойных кавычек

Согласно вашему комментарию, вы хотите заблокировать только icmp (ping), правило будет следующим.

Хост A

iptables -A INPUT -p icmp --icmp-type 8 -s ip_address_of_host_B -j DROP

Исключение -s ip_address_of_host_B сделает все остальные IP-адреса недоступными для проверки связи с хостом A . Также измените ip_address_of_host_B на фактический IP-адрес хоста B.

Ваше правило:

iptables -I INPUT 1 -s 10.2.10.163 -j DROP

означает: «Блокировать все протоколы связи (tcp / udp / icmp / etc) из источника 10.2.10.163».

Если вы требуете чего-то еще, дайте мне знать, чтобы я мог обновить ответ.

1
17.11.2018, 03:23
2 ответа

Это похоже на XML, поэтому не используйте regexps для редактирования, используйте настоящий парсер XML, такой как xmlstarlet:

xml ed -u '//VALUE/@NORECONNECT' -v 0 file.xml
6
27.01.2020, 23:11

При условии, что внутри этого поля нет встроенных " символов, это можно сделать с помощью такого инструмента, как sed

sed 's/NORECONNECT="[^"]*"/NORECONNECT="0"/'

Первое выражение означает соответствие NORECONNECT="", за которым следует ноль или более не" символов, за которым следует ""

Так что это будет соответствовать таким вещам, как

NORECONNECT="foo"
NORECONENCT="bar"
NORECONNECT=""

И затем заменит эту часть строкой

NORECONNECT="0"

EDIT:

Если слово появляется более одного раза в строке, добавьте g в конец:

sed 's/NORECONNECT="[^"]*"/NORECONNECT="0"/g'
5
27.01.2020, 23:11

Теги

Похожие вопросы