AWK 不在方括号内打印变量
AWK not printing variable inside square brackets
我有一个 bash 脚本,关键部分是这样的:
#!/bin/sh
read IP (Example: 192.168.2.46)
var1= $IP
awk -v var="$var1" 'NR==3{print " \"server\": [ \"var:666\" ]"}7' /home/mark/server.conf > /home/mark/tmp && mv -f /home/mark/tmp /home/mark/server.conf
期望的输出是:
"server": [ "192.168.2.46:666" ]
但是,我得到:
"server": [ "var1:666" ]
为什么,以及如何解决?
只需将 awk 变量 var
放在双引号外即可。
awk -v var="$var1" 'NR==3{print " \"server\": [ \""var":666\" ]"}7'
示例:
$ var1="123"
$ echo '1' | awk -v var="$var1" '/1/{print "foo\""var"\"bar"}'
foo"123"bar
我有一个 bash 脚本,关键部分是这样的:
#!/bin/sh
read IP (Example: 192.168.2.46)
var1= $IP
awk -v var="$var1" 'NR==3{print " \"server\": [ \"var:666\" ]"}7' /home/mark/server.conf > /home/mark/tmp && mv -f /home/mark/tmp /home/mark/server.conf
期望的输出是:
"server": [ "192.168.2.46:666" ]
但是,我得到:
"server": [ "var1:666" ]
为什么,以及如何解决?
只需将 awk 变量 var
放在双引号外即可。
awk -v var="$var1" 'NR==3{print " \"server\": [ \""var":666\" ]"}7'
示例:
$ var1="123"
$ echo '1' | awk -v var="$var1" '/1/{print "foo\""var"\"bar"}'
foo"123"bar