这个awk脚本做什么?

这个awk脚本做什么?,awk,makefile,Awk,Makefile,我在嵌入在Makefile中的 awk '/@/{print " \"" $$_ "\\n\"" }' file 我知道awk的原型是: awk 'pattern {action}' file 但是@和$$是什么意思呢?好吧,这很奇怪。它似乎具有与以下相同的效果: awk '/@/{print " \"" $_ "\\n\"" }' file awk '/@/{print " \"" $0 "\\n\"" }' file 其效果与: awk '/@/{print " \"" $_

我在嵌入在Makefile中的

awk '/@/{print "  \"" $$_ "\\n\"" }' file
我知道awk的原型是:

awk 'pattern {action}' file

但是
@
$$
是什么意思呢?

好吧,这很奇怪。它似乎具有与以下相同的效果:

awk '/@/{print "  \"" $_ "\\n\"" }' file
awk '/@/{print "  \"" $0 "\\n\"" }' file
其效果与:

awk '/@/{print "  \"" $_ "\\n\"" }' file
awk '/@/{print "  \"" $0 "\\n\"" }' file
也就是说,它采用
foo@bar
并将其转换为
“foo@bar\n“
(带两个前导空格)。没有
@
的行将被删除,因为它们与模式不匹配


但是我从来没有见过双美元符号,也没有将
$\ucode>用作同义词,也没有在任何地方找到它们的文档…

在这种情况下,下划线字符似乎只是一个变量。因为它没有初始化,所以它的值为零。因此,
$\uu
相当于
$0
,它指的是已处理的整行。我认为它也可以写成
$x
,因为x是一个未初始化的变量

由于它出现在makefile中,因此需要两个美元符号(它是makefile中的特殊字符)才能在命令中生成一个美元符号


正如尼莫已经提到的,
@
只是一种模式。任何包含
@
的行都将被匹配。

您是否在Makefile中找到了它?多了解一些情况会有所帮助。祝你好运。@Shelleter,是的,它在一个生成文件中。