删除Vagrantfile中的代码块

时间:2017-09-30 13:30:01

标签: regex bash sed

我在Vagrantfile中有下一个代码:

  node.vm.network 'private_network',
    ip: ip_prefix + "#{index}",
    nic_type: "virtio"

  if additional_ifaces
    additional_ifaces.each do |iface|
      node.vm.network 'private_network',
        ip: iface['ip'],
        nic_type: "virtio"
    end
  end

我想在sed的帮助下删除这段代码。 能否请你帮忙? P.S。:只要文件内容经常更改,我就不想使用一系列行号进行删除。

我试图通过使用变量并将其传递给sed来实现它,但是它引发了有关转义的错误:

$ sed -i "s/$l//g" Vagrantfile 
sed: -e expression #1, char 38: unterminated `s' command

变量的内容是:

$ echo $l
node.vm.network \'private_network\', ip: ip_prefix \+ "\#\{index\}", nic_type: virtio \if additional_ifaces additional_ifaces\.each \do \|iface\| node\.vm\.network \'private_network\'\, \ip: iface\[\'ip\'\], nic_type: "virtio" end end

2 个答案:

答案 0 :(得分:1)

我建议使用GNU sed:

sed '/^  node\.vm\.network .private_network.,$/,/^  end$/d' file

如果你想编辑你的文件"就地"使用sed的选项-i

请参阅:The Stack Overflow Regular Expressions FAQ

答案 1 :(得分:1)

您可以使用下面的

删除模式匹配后的特定行数
sed -i -e '/node.vm.network/,+10d' Vagrantfile