我发现这一个嵌入在一个Makefile:这个awk脚本是做什么的?
awk '/@/{print " \"" $$_ "\\n\"" }' file
我知道AWK的原型为:
awk 'pattern {action}' file
但什么是@
和$$_
是什么意思?
我发现这一个嵌入在一个Makefile:这个awk脚本是做什么的?
awk '/@/{print " \"" $$_ "\\n\"" }' file
我知道AWK的原型为:
awk 'pattern {action}' file
但什么是@
和$$_
是什么意思?
它看起来像下划线简直就是在这一个变量案件。并且由于它没有被初始化,所以它的值为零。因此,$_
相当于$0
,它是指已处理的整个行。我认为它也可以写成$x
,因为x将是一个未初始化的变量。
由于它出现在makefile中,因此需要两个美元符号(它是makefile中的特殊字符)在命令中产生一个美元符号。
而正如Nemo已经提到的那样,@
就是这种模式。任何包含@
的行都会被匹配。
确实很奇怪。它似乎有同样的效果:
而且也是同样的效果为:
awk '/@/{print " \"" $0 "\\n\"" }' file
也就是说,它采取的形式[email protected]
的任何一行,并将其转换为"[email protected]\n"
(有两个领先空格)。没有@
的行因为与模式不匹配而被删除。
但我从来没有见过双美元符号,也不使用$_
的代名词,也可以找到他们的任何地方记录......
你觉得这嵌入在一个Makefile?多一点背景会有所帮助。祝你好运。 – shellter 2011-06-09 14:10:28
@shellter,是的,它在一个makefile中。 – 2011-06-09 14:31:21