这个awk脚本做什么?
我在嵌入在Makefile中的这个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 " \"" $_
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,是的,它在一个生成文件中。