【发布时间】:2014-06-16 09:07:09
【问题描述】:
我想在 print 语句的 awk 脚本中将三个变量输出连接到一个变量。
前任:
a="a"
b="b"
c="c"
和预期的输出是
d=a-b-c
【问题讨论】:
-
是
a、b和cshell 还是 awk 变量?你想打印d=a-b-c还是创建一个变量d填充字符串a-b-c?d是shell变量还是awk变量?
我想在 print 语句的 awk 脚本中将三个变量输出连接到一个变量。
前任:
a="a"
b="b"
c="c"
和预期的输出是
d=a-b-c
【问题讨论】:
a、b 和 c shell 还是 awk 变量?你想打印d=a-b-c 还是创建一个变量d 填充字符串a-b-c? d是shell变量还是awk变量?
这是怎么做的:
a=a
b=b
c=c
d=$(awk -v x="$a" -v y="$b" -v z="$c" -v OFS="-" 'BEGIN {print x,y,z}')
echo $d
a-b-c
您使用-v 选项在awk 中声明变量。
或者打印出来,如果你需要的话
awk -v x="$a" -v y="$b" -v z="$c" -v OFS="-" 'BEGIN {print "d="x,y,z}'
d=a-b-c
【讨论】:
You declare variable in awk, by using the -v option 更改为You can initialize variables in awk by using the -v option,因为您仍然从未在awk 中声明变量。声明将是像 int c;(C 语法)这样的语句来为变量提供类型,而 initing 正在设置像 c = 3 这样的初始值。
你没有说这三个变量是awk变量还是shell变量所以假设它们是awk变量:
$ awk 'BEGIN {
a = "a"
b = "b"
c = "c"
print "d=" a "-" b "-" c
}'
d=a-b-c
如果它们是 shell 变量,请参阅 @Jotne 的回答。
【讨论】: