在awk中,我有2个字段:1美元和2美元。
它们都是我想要连接并分配给变量的字符串。
你可以说:
awk '{b=$1$2; print b}' file
如果您想在两者之间留一个空格,请执行以下操作:
awk '{b=$1" "$2; print b}' file
实际上使用FS
是一样的,因为它默认为空格:
awk '{b=$1 FS $2; print b}' file
$ cat a
hello how are you
i am fine
$ awk '{b=$1$2; print b}' a
hellohow
iam
$ awk '{b=$1 FS $2; print b}' a
hello how
i am
你可以在ideone中使用它:http://ideone.com/4u2Aip
可以使用sprintf
来完成这个:
awk '{str = sprintf("%s %s", $1, $2)} END {print str}' file
在awk中连接字符串可以通过打印命令AWK manual page来完成,你可以做复杂的组合。在这里,我试图将16个字符更改为A并使用字符串连接:
echo CTCTCTGAAATCACTGAGCAGGAGAAAGATT | awk -v w=15 -v BA=A '{OFS=""; print substr($0, 1, w), BA, substr($0,w+2)}'
Output: CTCTCTGAAATCACTAAGCAGGAGAAAGATT
我使用substr函数来提取输入的一部分(STDIN)。我传递了一些外部参数(这里我使用的是硬编码值),通常是shell变量。在shell编程的上下文中,您可以编写-v w = $ width -v BA = $ my_charval。关键是OFS代表awk中的输出字段分隔。打印功能获取值列表并将其写入STDOUT并将其与OFS粘合。这类似于perl连接函数。
它看起来在awk中,字符串可以通过彼此相邻的打印变量连接起来:
echo xxx | awk -v a="aaa" -v b="bbb" '{ print a b $1 "string literal"}'
# will produce: aaabbbxxxstring literal
您还可以使用空格连接多行中的字符串。
cat file.txt apple 10 oranges 22 grape 7
例1:
awk'{aggr = aggr“”$ 2} END {print aggr}'file.txt
10 22 7
例2:
awk'{aggr = aggr“,”$ 1“:”$ 2} END {print aggr}'file.txt
,苹果:10,橙子:22,葡萄:7