如果行包含特定的字符串/单词,如何在行首插入#?

如果行包含特定的字符串/单词,如何在行首插入#?
 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

答案1

您可以尝试以下操作:

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

它将用^.*CMX.*$其自身替换包含该内容的行,但在前面加上#

这里,替换字符串\1是括号中整个匹配的字符串。^表示行首和$行末。.*匹配任何字符串(长度为 0 或更长)。

答案2

你可以用以下方法sed“替换”零宽度^行首锚点#

s/^/#/

仅在file该匹配的行中CMX

sed -i.bak '/CMX/s/^/#/' file

相关内容