linux - 如何在 awk 中转义 {}?

标签 linux bash awk

我有很多输入行,如下所示,我希望最终得到与此类似的输出

host tsclient010.tsclient {
   option host-name "tsclient010.tsclient";
   hardware ethernet 00E0C56BF96D;
   fixed-address 192.168.246.10;
}

每个输入。但是我遇到了静态内容包含 {} 的问题。

echo "192.168.246.10 00E0C56BF96D tsclient010.tsclient" | awk '{print
host $3 {
   option host-name "$3";
   hardware ethernet $2;
   fixed-address $1;
}
}'

输出:

awk: cmd. line:2:     host $3 {
awk: cmd. line:2:             ^ syntax error

我试图通过 '\{' 对其进行转义,但没有成功。

问题

有谁知道如何转义所需的字符?

最佳答案

您不需要转义大括号。您需要引用它们并转义双引号。

awk '{printf "\
host %s {\
   option host-name \"%s\";\
   hardware ethernet %s;\
   fixed-address %s;\
}\n", $3, $3, $2, $1
}'

关于linux - 如何在 awk 中转义 {}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53103301/

相关文章:

c - 访问设备的寄存器 i2c

python - 在 Python 脚本中运行 git 命令会导致语法错误

linux - 在 suse linux 中远程启用和禁用 cronjob

awk - 这个 awk 命令是如何工作的?

r - 将不同列的大数据文件合并为一个大文件

python - 子进程在 Linux 上不起作用

android - bashrc 中的 ANDROID_SDK_ROOT 和 local.properties 中的 sdk.dir 都不起作用

linux - 如何知道bash中文件是否被删除和创建?

regex - awk、sed 或 vim 正则表达式

linux - 为什么我需要两个不同的 wpa_supplicant 连接(wpa_cli - ctrl_conn 和 mon_conn)