提前为一个相当简单的问题道歉。
在一大堆“自我注意”中,我有一个很好的单线程工作完全满足我的需求,即从php文件中删除注释。但我想更好地理解它:
awk '/^\/\*/{c++} c!=1; /^ \*\//{c++}'
不幸的是,我不能找到原帖,以便更好地理解它是如何工作的。
谷歌搜索它在c ++上有很多东西,但不是原帖。 Explain Shell和Symbol Hound都没有帮助。我并没有特别被{c++} c!=1;
位困扰。任何帮助将不胜感激。
答案 0 :(得分:1)
我已经测试了您的awk
脚本,但它无法正常工作!
您应该使用以下内容删除:
gawk '/^\/\*/{c++} c!=1; /^.*\*\//{c=0}' php_file
删除/* comments */
多行注释或仅包含/* comments */
!!!
测试:
简而言之,
awk
将逐行读取输入文件并执行默认操作:打印 /^\/\*/
满足时(/*
评论直接位于该行的开头){c++}
将在awk
变量中执行!默认情况下启动为0,因此在阻止c=1
和c!=1
之后将false
,因此不会打印任何内容。c!=1
将false
,那么就不会打印任何内容。<强> 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 */