2011-06-09 131 views
3

我發現這一個嵌入在一個Makefile:這個awk腳本是做什麼的?

awk '/@/{print " \"" $$_ "\\n\"" }' file 

我知道AWK的原型爲:

awk 'pattern {action}' file 

但什麼是@$$_是什麼意思?

+0

你覺得這嵌入在一個Makefile?多一點背景會有所幫助。祝你好運。 – shellter 2011-06-09 14:10:28

+0

@shellter,是的,它在一個makefile中。 – 2011-06-09 14:31:21

回答

2

它看起來像下劃線簡直就是在這一個變量案件。並且由於它沒有被初始化,所以它的值爲零。因此,$_相當於$0,它是指已處理的整個行。我認爲它也可以寫成$x,因爲x將是一個未初始化的變量。

由於它出現在makefile中,因此需要兩個美元符號(它是makefile中的特殊字符)在命令中產生一個美元符號。

而正如Nemo已經提到的那樣,@就是這種模式。任何包含@的行都會被匹配。

1

確實很奇怪。它似乎有同樣的效果:

​​

而且也是同樣的效果爲:

awk '/@/{print " \"" $0 "\\n\"" }' file 

也就是說,它採取的形式[email protected]的任何一行,並將其轉換爲"[email protected]\n"(有兩個領先空格)。沒有@的行因爲與模式不匹配而被刪除。

但我從來沒有見過雙美元符號,也不使用$_的代名詞,也可以找到他們的任何地方記錄......