awk:了解如何在php中删除注释

时间:2017-12-07 05:24:32

标签: bash awk

提前为一个相当简单的问题道歉。

在一大堆“自我注意”中,我有一个很好的单线程工作完全满足我的需求,即从php文件中删除注释。但我想更好地理解它:

awk '/^\/\*/{c++} c!=1; /^ \*\//{c++}'

不幸的是,我不能找到原帖,以便更好地理解它是如何工作的。

谷歌搜索它在c ++上有很多东西,但不是原帖。 Explain ShellSymbol Hound都没有帮助。

我并没有特别被{c++} c!=1;位困扰。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我已经测试了您的awk脚本,但它无法正常工作! 您应该使用以下内容删除:

 gawk '/^\/\*/{c++} c!=1; /^.*\*\//{c=0}' php_file

删除/* comments */多行注释或仅包含/* comments */ !!!

的单行

测试:

enter image description here

简而言之,

  • awk将逐行读取输入文件并执行默认操作:打印
  • 当条件/^\/\*/满足时(/*评论直接位于该行的开头){c++}将在awk变量中执行!默认情况下启动为0,因此在阻止c=1c!=1之后将false,因此不会打印任何内容。
  • 只要我们在评论部分中c!=1false,那么就不会打印任何内容。
  • 然后我们到达最后一行注释并且c被设置回0,因此从下一行开始,将再次打印所有内容。

<强> REMARK:

    带有/* */后面的命令的
  • 行仍按原样打印
  • //评论未被删除
  • 如果在评论栏后面的同一行有一些非常重要的命令,则会丢失 !!!

    /* comment starts
    /* still some comments
    end of comments */some super important commands;
    

<强>改进:

  • c=!1更改c<1以提高脚本的稳定性,c!=1您的脚本将在以下情况下停止正常运行:

    /* comment starts
    /* still some comments
    end of comments */