Как я могу вставить # в начале строки, если строка содержит конкретную строку/слово?

 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
0
задан 9 December 2019 в 14:11

2 ответа

Можно попробовать следующее:

sed -Ei 's/(^.*CMX.*$)/#\1/' your_file_name

Это заменит строку, содержащую ^.*CMX.*$ с собой, но путем предварительного ожидания с #.

Здесь, в замещающей строке \1 целая совпавшая строка в круглых скобках. ^ указывает на начало строки и $ конец строки. .* соответствия любая строка (0 длин или дольше).

2
ответ дан 21 December 2019 в 23:37

Используя sed можно "заменить" нулевую ширину ^, запускают из строки привязку с #

s/^/#/

только в строках file, которые соответствуют CMX:

sed -i.bak '/CMX/s/^/#/' file
0
ответ дан 21 December 2019 в 23:37

Другие вопросы по тегам:

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