Sed / RegEx:从PHP文件中删除两个字符串之间的代码块

时间:2016-05-26 13:50:46

标签: regex bash sed

我一直在尝试使用sed从PHP文件中删除一段代码,即在这两个标记之间: // istart // iend 。应删除标记之间的代码和标记本身。我的想法是递归地做,所以我可以为几个文件做到这一点。

所以,我已经获得了这个RegEx:/\/\/istart([\s\S]*?)\/\/iend/

您可以在此处查看:https://regex101.com/r/sQ2bA0/2

但是,当我运行 sed 命令时,该文件没有任何反应。我已经尝试过几种方式,但总是没有成功。

  • sed -i 's/istart([\s\S]*?)\/\/iend//g' test.php
  • sed -i '1s/\/\/istart([\s\S]*?)\/\/iend//' test.php

我做错了什么?

感谢您的帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用此sed

sed '/\/\/istart/,/\/\/iend/{s/\/\/istart.*$//p; s/^.*\/\/iend//p; d;}' file

答案 1 :(得分:0)

CarlosMaia!

试试这个:

"\/\/istart{1,}(.*\n)+.*\/\/iend"

但是你需要在" // istart"之间加一条线。和" // iend"

最好的问候!!