首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何逃避{}在awk?

如何逃避{}在awk?
EN

Stack Overflow用户
提问于 2018-11-01 14:27:10
回答 2查看 3.4K关注 0票数 3

我有许多输入行,如下所示,我希望得到类似于下面的输出

代码语言:javascript
复制
host tsclient010.tsclient {
   option host-name "tsclient010.tsclient";
   hardware ethernet 00E0C56BF96D;
   fixed-address 192.168.246.10;
}

在输入之前。但是,我遇到了静态内容包含{}的问题。

代码语言:javascript
复制
echo "192.168.246.10 00E0C56BF96D tsclient010.tsclient" | awk '{print
host $3 {
   option host-name "$3";
   hardware ethernet $2;
   fixed-address $1;
}
}'

输出:

代码语言:javascript
复制
awk: cmd. line:2:     host $3 {
awk: cmd. line:2:             ^ syntax error

我曾试图通过'\{'逃避它,但不起作用。

问题

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-01 14:42:18

  1. 双引号内的文本是文本。不在双引号内的文本是awk脚本。
  2. 换行符是awk命令。

您可以:

代码语言:javascript
复制
echo "192.168.246.10 00E0C56BF96D tsclient010.tsclient" | awk '{
    print "host "$3" {"
    print "option host-name \""$3"\";"
    print "hardware ethernet "$2";"
    print "fixed-address "$1";"
    print "}"
}'

代码语言:javascript
复制
echo "192.168.246.10 00E0C56BF96D tsclient010.tsclient" | awk '{
    print "host "$3" {\noption host-name \""$3"\";\nhardware ethernet "$2";\nfixed-address "$1";\n}" }'
票数 4
EN

Stack Overflow用户

发布于 2018-11-01 14:40:56

你不需要逃避牙套。你需要引用它们并避开双引号。

代码语言:javascript
复制
awk '{printf "\
host %s {\
   option host-name \"%s\";\
   hardware ethernet %s;\
   fixed-address %s;\
}\n", $3, $3, $2, $1
}'
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53103301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档