【问题标题】:how to concatenate two or more string stored in a variable inside awk script如何连接存储在awk脚本内的变量中的两个或多个字符串
【发布时间】:2014-06-16 09:07:09
【问题描述】:

我想在 print 语句的 awk 脚本中将三个变量输出连接到一个变量。 前任: a="a" b="b" c="c" 和预期的输出是 d=a-b-c

【问题讨论】:

  • abc shell 还是 awk 变量?你想打印d=a-b-c 还是创建一个变量d 填充字符串a-b-cd是shell变量还是awk变量?

标签: linux unix awk ksh


【解决方案1】:

这是怎么做的:

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

【讨论】:

  • @EdMorton 我上面的其他帖子更多,这是由其他人发布的。固定文本。
  • 啊,明白了。您应该将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 这样的初始值。
【解决方案2】:

你没有说这三个变量是awk变量还是shell变量所以假设它们是awk变量:

$ awk 'BEGIN {
    a = "a"
    b = "b"
    c = "c"
    print "d=" a "-" b "-" c
}'
d=a-b-c

如果它们是 shell 变量,请参阅 @Jotne 的回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-19
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 2014-07-27
    相关资源
    最近更新 更多