Я нашел эту команду в файле докеров, как показано ниже.Что такое «c == 0 {c = 0; system (« cat »)}» в AWK
Я не мог его назвать.
Я нашел эту команду в файле докеров, как показано ниже.Что такое «c == 0 {c = 0; system (« cat »)}» в AWK
Я не мог его назвать.
Программа awk
печатает каждую строку из входного файла. Если он найдет первую строку, начинающуюся с [mysqld]
, она использует системную команду cat
для печати текста из трубы.
Лично я хотел бы использовать что-то вроде этого:
awk -v add='skip-host-cache\nskip-name-resolve' \
'{ print } $1 == "[mysqld]" && found == 0 { print add; found = 1; }' my.cnf
Спасибо. я получаю это – yawhua
, но я не могу понять «found == 0». – yawhua
@Yaohua Любая неинициализированная переменная будет 'false', т. Е. Равна нулю. Поэтому 'found == 0' истинно, если мы не присваиваем никакого значения, которое мы делаем только после того, как найдем' [mysqld] '. Поэтому только правило будет применяться только к первому совпадению. –
любезно размещать образец input_file и ожидаемый результат, выше команда работает? Я не думаю, что так оно и есть для меня. – RavinderSingh13
В дополнение к тому, что я добавил в своем предыдущем комментарии, система («cat») не должна работать, так как cat будет запрашивать параметр (имя_файла) для его чтения. Кроме того, система отвечает за использование команд оболочки внутри awk, но она НЕ понятна, и команда, похоже, не работает. – RavinderSingh13
выполните команду command.it, добавив «skip-host-cache \ nskip-name-resolve» в блок «[mysqld]» my.cnf – yawhua