我發現這一個嵌入在一個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