0

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

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

            RESULT = STRING1 "" STRING2 ;   

            print RESULT ;   

    }' | (output....)   

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

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

4

1 回答 1

2

给定的代码不会将 a 添加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()或更好,只需将函数调用放在脚本的下一行。

于 2013-04-25T11:42:53.620 回答