2017-02-15 6 views
-2

Я нашел эту команду в файле докеров, как показано ниже.Что такое «c == 0 {c = 0; system (« cat »)}» в AWK

Я не мог его назвать.

+0

любезно размещать образец input_file и ожидаемый результат, выше команда работает? Я не думаю, что так оно и есть для меня. – RavinderSingh13

+0

В дополнение к тому, что я добавил в своем предыдущем комментарии, система («cat») не должна работать, так как cat будет запрашивать параметр (имя_файла) для его чтения. Кроме того, система отвечает за использование команд оболочки внутри awk, но она НЕ понятна, и команда, похоже, не работает. – RavinderSingh13

+1

выполните команду command.it, добавив «skip-host-cache \ nskip-name-resolve» в блок «[mysqld]» my.cnf – 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

, но я не могу понять «found == 0». – yawhua

+0

@Yaohua Любая неинициализированная переменная будет 'false', т. Е. Равна нулю. Поэтому 'found == 0' истинно, если мы не присваиваем никакого значения, которое мы делаем только после того, как найдем' [mysqld] '. Поэтому только правило будет применяться только к первому совпадению. –

Смежные вопросы