我尝试在awk脚本中连接两个字符串但是我得到的结果在最后一个位置有一个“0”。
(input...) | awk '$1 ~ "match" {
(...)
STRING1 = $2 ;
STRING2 = $3 ;
RESULT = STRING1 "" STRING2 ;
print RESULT ;
}' | (output....)
如果是$2 = "Foo"
和$3 = "Bla"
,结果将为“FooBla0
”。
如何连接结果为“FooBla
”的两个字符串?
答案 0 :(得分:2)
给定的代码不会将0
附加到该行,或者您的代码不完整,您的输入不是您所期望的,或者在简化问题时您遗漏了一条关键信息:< / p>
$ cat file
match foo bla
$ awk '$1 ~ "match" {
STRING1 = $2 ;
STRING2 = $3 ;
RESULT = STRING1 "" STRING2 ;
print RESULT ;
}' file
foobla
注意:对于简单的字段连接,这是很多不必要的代码:
$ awk '$1=="match"{print $2$3}' file
foobla
还要注意$1=="match"
和$1~"match"
之间的区别,第一个是完整字段字符串匹配,第二个是正则表达式匹配。如果你真的想要第二个我建议使用$1~/match/
。
我怀疑你错过了关键信息,print fflush()
打印了函数的退出状态。你想要print RESULT;fflush()
或更好,只需将函数调用放在下一行脚本上。