awk输出中的额外空间

sha*_*nuo 5 awk

为什么在以下示例中获取分隔符之前和之后的空格?

awk -F'^'  '{print $1,":",$2}' SERVER_2012-02-29-12-15-00
3969 : 1272
3969 : 1272
3969 : 1272
Run Code Online (Sandbox Code Playgroud)

我希望结果如下,没有任何空格:

3969:1272
3969:1272
3969:1272
Run Code Online (Sandbox Code Playgroud)

文本文件看起来像这样......

cat SERVER_2012-02-29-12-15-00
3969^1272^14.140.90.242^^IN^como^2012-02-29
3969^1272^14.140.90.242^^IN^como^2012-02-29
3969^1272^14.140.90.242^^IN^como^2012-02-29
Run Code Online (Sandbox Code Playgroud)

pot*_*ong 12

这可能对你有用:

awk -F'^'  '{print $1":"$2}' SERVER_2012-02-29-12-15-00
3969:1272
3969:1272
3969:1272
Run Code Online (Sandbox Code Playgroud)

:删除字段来连接字段,.

或者将输出字段分隔符更改OFS为null.

awk -F'^' -vOFS='' '{print $1",:,"$2}' SERVER_2012-02-29-12-15-00
3969:1272
3969:1272
3969:1272
Run Code Online (Sandbox Code Playgroud)


jfg*_*956 5

解决方案已经给出,但没有完整的解释......

这是因为当您使用print许多参数(以逗号分隔)时,它会在值之间放置一个字段分隔符.来自awk男人:

print expr-list

打印表达式.每个表达式由OFS变量的值分隔.输出记录以ORS变量的值终止.

在字符串连接运算符awk是不是昏迷,没有+,但空间:str = str1 str2串联str1str2.