Bash Awk:了解如何在php中删除注释
为一个相当简单的问题提前道歉 在一大堆“自我注释”中,我有一个小小的awk-one-liner,可以完美地满足我的需要,即从php文件中删除注释。但我想更好地理解它:Bash Awk:了解如何在php中删除注释,bash,awk,Bash,Awk,为一个相当简单的问题提前道歉 在一大堆“自我注释”中,我有一个小小的awk-one-liner,可以完美地满足我的需要,即从php文件中删除注释。但我想更好地理解它: awk'/^\/\*/{c++}c=1; /^ \*\//{c++}' 不幸的是,为了更好地理解它的工作原理,我无法找到原来的帖子 Google在C++上发现了大量的东西,但不是原来的文章。两者都没有帮助 我并不特别被{c++}c难倒=1;位。任何帮助都将不胜感激 我已经测试了你的awk脚本,但它不能正常工作!!! 您应该使用以下
awk'/^\/\*/{c++}c=1; /^ \*\//{c++}'
不幸的是,为了更好地理解它的工作原理,我无法找到原来的帖子
Google在C++上发现了大量的东西,但不是原来的文章。两者都没有帮助
我并不特别被
{c++}c难倒=1;代码>位。任何帮助都将不胜感激 我已经测试了你的awk
脚本,但它不能正常工作!!!
您应该使用以下方法删除:
gawk '/^\/\*/{c++} c!=1; /^.*\*\//{c=0}' php_file
要删除/*注释*/
多行注释或只有/*注释*/
的单行注释
测试日期:
简言之
awk
将逐行读取输入文件,并执行其默认操作:打印
- 当满足条件
/^\/\*/
时(/*
注释直接位于行的开头),将执行块{c++}
!,在awk
中,变量默认为0,因此在块c=1
和c之后=1
将为false
因此不会打印任何内容
- 只要我们在评论区
c=1
将为false
因此不会打印任何内容
- 然后我们到达注释的最后一行,c被设置回0,因此从下一行开始,所有内容都将再次打印李>
备注:
- 后面有命令的行仍按原样打印
/
注释不会被删除
- 如果注释块后面的同一行中有一些超级重要的命令,它们将丢失
/* comment starts
/* still some comments
end of comments */some super important commands;
改进:
- 更改
c=!1
byc数值上下文中变量的初始值为0
。。。因此,第一次执行c++
时,它将有值1
,然后是2
,依此类推<代码>c=1是独立的代码块,与{c++}
块无关。。。当c
不是1
时,条件将为真,并将打印输入记录(默认操作)。。如需了解更多此类习语,请参阅谢谢您的快速回答!所以它实际上是使用C++,它不是AWK注释吗?我有你提到的网站书签,但我看不到其中的C++。由于C++在注释标记的开始和结束时增加了var(代码> C/<代码> >代码> >代码> >代码> >代码> 1,它只删除第一个注释。@ Farhang与C++语言无关,它使用字母c
作为计数器,并在每次找到多行注释开头时递增,例如每次找到/*
和结束时,例如找到*/
。谢谢David。我认为它与C++无关,但我又担心我错过了更大的东西。谢谢你的澄清,非常感谢。这不仅有助于实际的awk,我很感激你解释得如此清楚。非常感谢。不客气!:-)awk
和sed
是非常强大的工具,可以帮助您操作文件(尤其是代码/设置文件),当您有时间时,我只能建议您加深对这些工具的了解,这将提高您的工作效率!!
/* comment starts
/* still some comments
end of comments */