如何在awk中逃脱{}?

San*_*ing 3 linux bash awk

我有很多输入行,如下所示,我想得到一个类似于此的输出

host tsclient010.tsclient {
   option host-name "tsclient010.tsclient";
   hardware ethernet 00E0C56BF96D;
   fixed-address 192.168.246.10;
}
Run Code Online (Sandbox Code Playgroud)

前面的投入.但是我遇到了静态内容包含的问题{}.

echo "192.168.246.10 00E0C56BF96D tsclient010.tsclient" | awk '{print
host $3 {
   option host-name "$3";
   hardware ethernet $2;
   fixed-address $1;
}
}'
Run Code Online (Sandbox Code Playgroud)

输出:

awk: cmd. line:2:     host $3 {
awk: cmd. line:2:             ^ syntax error
Run Code Online (Sandbox Code Playgroud)

我试图逃避它'\{',但不起作用.

有谁知道如何逃避所需的字符?

Wil*_*ell 5

你不需要逃避括号.你需要引用它们并转义双引号.

awk '{printf "\
host %s {\
   option host-name \"%s\";\
   hardware ethernet %s;\
   fixed-address %s;\
}\n", $3, $3, $2, $1
}'
Run Code Online (Sandbox Code Playgroud)