2017-02-15 56 views
-2

我在下面的dockerfile中發現了這個命令。AWK中的「c == 0 {c = 0; system(」cat「)}」

我不能低估它。

+0

慈祥發佈樣品INPUT_FILE和預期產出,上面的命令工作?我不認爲這至少對我有意義。 – RavinderSingh13

+0

除了我之前評論中添加的內容,系統(「貓」)不應該工作,因爲cat會需要一個參數(file_name)來讀取它。此外,系統負責在awk中使用shell命令,但它並不清晰,命令似乎不起作用。 – RavinderSingh13

+1

執行此命令。它會將「skip-host-cache \ nskip-name-resolve」添加到my.cnf的「[mysqld]」塊中 – yawhua

回答

-1

awk程序打印從輸入文件中的每一行。如果發現第一行以[mysqld]開頭,則它使用系統命令cat來打印管道中的文本。

就個人而言,我會用這樣的:

awk -v add='skip-host-cache\nskip-name-resolve' \ 
    '{ print } $1 == "[mysqld]" && found == 0 { print add; found = 1; }' my.cnf 
+0

謝謝。我知道它 – yawhua

+0

,但我無法理解「發現== 0」。 – yawhua

+0

@耀華任何未初始化的變量都將是'false',即等於零。因此,只要我們沒有分配任何值,只有在找到'[mysqld]'後,'found == 0'纔是真實的。所以只有規則只適用於第一場比賽。 –