什么是AWK中的“c == 0 {c = 0; system(”cat“)}”

时间:2017-02-15 03:17:26

标签: unix awk

我在dockerfile中找到了这个命令,如下所示。

echo -e 'skip-host-cache\nskip-name-resolve' | awk '{ print } $1 == "[mysqld]" && c == 0 { c = 1; system("cat") }' /etc/my.cnf > /tmp/my.cnf

我无法理解它。

1 个答案:

答案 0 :(得分:-1)

awk程序打印输入文件中的每一行。如果它找到以[mysqld]开头的第一行,则使用系统命令cat从管道中打印文本。

就个人而言,我会使用这样的东西:

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