我有许多输入行,如下所示,我希望得到类似于下面的输出
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我曾试图通过'\{'逃避它,但不起作用。
问题
有谁知道如何避开所需的字符吗?
发布于 2018-11-01 14:42:18
您可以:
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 "}"
}'或
echo "192.168.246.10 00E0C56BF96D tsclient010.tsclient" | awk '{
print "host "$3" {\noption host-name \""$3"\";\nhardware ethernet "$2";\nfixed-address "$1";\n}" }'发布于 2018-11-01 14:40:56
你不需要逃避牙套。你需要引用它们并避开双引号。
awk '{printf "\
host %s {\
option host-name \"%s\";\
hardware ethernet %s;\
fixed-address %s;\
}\n", $3, $3, $2, $1
}'https://stackoverflow.com/questions/53103301
复制相似问题