2013-04-25 19 views
0

我试图在awk脚本中连接两个字符串,但得到的结果在最后一个位置有一个“0”。awk:String Concat添加“0”

(input...) | awk '$1 ~ "match" { 
      (...) 
      STRING1 = $2 ; 
      STRING2 = $3 ; 

      RESULT = STRING1 "" STRING2 ; 

      print RESULT ; 

    }' | (output....) 

如果例如, $2 = "Foo"$3 = "Bla",结果将是“FooBla0”。

如何连接结果为“FooBla”的那两个字符串?

+0

一些东西必须丢失,像一个平行的例子,如'echo“hi”“he”“hi”| awk'$ 1〜“hi”{a = $ 2; b = $ 3; ab = a“”b;打印ab}''正在工作。 – fedorqui 2013-04-25 11:39:48

回答

2

代码给出一个0不追加到行无论你的代码是不完整的,你的输入是不是如你预期或您的问题简单化你忽略了信息的关键部分:

$ 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()或更好,但只需将函数调用放在脚本的下一行。

+0

感谢您的帮助。 是的,我尝试了几次,在一些程序中运行 - 有些程序没有运行。 ;) 但现在我发现我的错误:“打印结果”工作 - 但我有“打印结果fflush()”,“0”在那里,因为“fflush()”... 我知道,对于这个小例子我的awk-Statement包含很多 不必要的代码,但是整个语句有超过20行,所以我 需要这个;-) – CFP 2013-04-25 11:59:46

+0

好吧,谢谢;) - 所以一个简单的失踪“;”是问题:D – CFP 2013-04-25 12:08:56

+0

没问题,是啊:) – 2013-04-25 12:09:37