【问题标题】:Bash script in ANT to remove text in fileANT 中的 Bash 脚本删除文件中的文本
【发布时间】:2013-05-18 21:37:15
【问题描述】:

我有这个脚本:

# run this command to create production version of project.html
/<!-- BEGIN PRODUCTION|END PRODUCTION -->/  { next }
/<!-- (BEGIN|END) DEVELOPMENT -->/ { skip = !skip; next }
!skip

长话短说,当我为生产编译应用程序时,它会替换 HTML 文件中的文本。它删除了我的 BEGIN DEVELOPMENT 评论和 END DEVELOPMENT 评论之间的所有代码,并取消了 BEGIN PRODUCTION 代码。下面是一个将被替换的文本示例:

<!-- BEGIN DEVELOPMENT -->
<link rel="stylesheet" href="/style.css" type="text/css" media="screen">    
<script type="text/javascript" src="/script.js"></script>
<!-- END DEVELOPMENT -->

<!-- BEGIN PRODUCTION
<link rel="stylesheet" href="/style.min.css" type="text/css" media="all" />
<script type="text/javascript" src="/script.min.js"></script>
END PRODUCTION --> 

这很好用。但是我需要在 PHP 文件中做同样的事情,我需要使用这种语法:

/* BEGIN DEVELOPMENT */
{PHP CODE}
/* END DEVELOPMENT */
/* BEGIN PRODUCTION
{PHP CODE}
END PRODUCTION */

它遵循相同的概念,但我无法让 shell 脚本正常工作。谁能告诉我为什么这是不正确的?:

# run this command to create production version of project.html
/\/* BEGIN PRODUCTION|END PRODUCTION *\//  { next }
/\/* (BEGIN|END) DEVELOPMENT *\// { skip = !skip; next }
!skip

感谢您的帮助!

根据下面的评论,这是正确的语法并且有效:

# run this command to create production version of project.html
/\/\* BEGIN PRODUCTION|END PRODUCTION \*\//  { next }
/\/\* (BEGIN|END) DEVELOPMENT \*\// { skip = !skip; next }
!skip

【问题讨论】:

  • 你不应该也逃避*吗?
  • 哇——我完全错过了。现在检查是否能解决我的问题
  • @Jaypal - 这解决了部分问题,但它没有删除“END PRODUCTION */”尾随注释。有什么想法吗?
  • 从头开始 - 一切正常!感谢您的帮助
  • 不客气@Andrew

标签: bash sed


【解决方案1】:

现在可以将其标记为已回答:

# run this command to create production version of project.html
/\/\* BEGIN PRODUCTION|END PRODUCTION \*\//  { next }
/\/\* (BEGIN|END) DEVELOPMENT \*\// { skip = !skip; next }
!skip

【讨论】:

    猜你喜欢
    • 2012-07-02
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    相关资源
    最近更新 更多