ManagedElement=1,Transport=1,Router={{TAG_OAM_CMX_LEFT_VR_NAME_TAG}}
no InterfaceIPv4=vlan1.{{TAG_OAM_NET_VLAN_TAG}}
top
ManagedElement=1,Transport=1,Router={{TAG_OAM_CMX_RIGHT_VR_NAME_TAG}}
no InterfaceIPv4=vlan1.{{TAG_OAM_NET_VLAN_TAG}}
commit -s
В этом файле я хочу добавить #
в начале, если и только если строка содержит CMX
. Таким образом, желаемый вывод:
#ManagedElement=1,Transport=1,Router={{TAG_OAM_CMX_LEFT_VR_NAME_TAG}}
no InterfaceIPv4=vlan1.{{TAG_OAM_NET_VLAN_TAG}}
top
#ManagedElement=1,Transport=1,Router={{TAG_OAM_CMX_RIGHT_VR_NAME_TAG}}
no InterfaceIPv4=vlan1.{{TAG_OAM_NET_VLAN_TAG}}
commit -s
Можно попробовать следующее:
sed -Ei 's/(^.*CMX.*$)/#\1/' your_file_name
Это заменит строку, содержащую ^.*CMX.*$
с собой, но путем предварительного ожидания с #
.
Здесь, в замещающей строке \1
целая совпавшая строка в круглых скобках. ^
указывает на начало строки и $
конец строки. .*
соответствия любая строка (0 длин или дольше).
Используя sed
можно "заменить" нулевую ширину ^
, запускают из строки привязку с #
s/^/#/
только в строках file
, которые соответствуют CMX
:
sed -i.bak '/CMX/s/^/#/' file