2011-10-06 161 views
2

您好每一個我想問一下,我非常瞭解括號{}在AWK很困惑就像我已經寫了代碼哪裏把括號AWK

{ 
    FNR == 3 { print $1 " age is " $2 } 
} 

,但它給了我錯誤的外支架但沒有給出錯誤周圍的print語句括號爲什麼會這樣:/還有如下代碼

{ 
s = $1 
d = $2 
no = $1 + $2 
{print no} 
} 

當我刪除外括號顯示我的論點,LOC的次數爲什麼是我非常混淆善意幫助我 謝謝

+0

我沒有在第二種情況下找到你對觀察行爲的描述,非常清楚。一些示例輸出和所需的輸出可能會使事情變得更加清晰。 –

回答

3

awk腳本由命令組成。每個命令有一個圖案和動作:

pattern1 { action1 } 
pattern2 { action2 } 

對於輸入的每一行,AWK測試每個圖案和當圖案是真正執行相應的動作。

該模式可以省略,在這種情況下,它被視爲始終爲真,併爲每一行執行操作。同樣,該行爲可以省略,在這種情況下,它被視爲print;這使您可以輕鬆使用awk來選擇線條而不更改線​​條。

考慮到這個結構,我們可以解釋給出的例子。第一個是適用於每一行的單一行爲。但是這個動作並不完整 - 如果你移除了外括號,它就變成了一個獨特的模式和動作,這兩者都被正確地構造了。

第二個例子也適用於每一行。它從行中取出前兩個(空白分隔)字段,將它們添加爲數字,並打印結果。移除外括號可以爲你提供三種沒有相應動作的模式,以及一種沒有模式的動作。因此,模式---這是作業的價值,並且通常是真實的---具有通常被調用的隱含的print。同樣,該操作總是被調用,打印值爲no

+0

非常感謝謝謝最好的解釋:) – mainajaved