awk输出中的额外空间

时间:2012-03-01 06:45:30

标签: awk

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

awk -F'^'  '{print $1,":",$2}' SERVER_2012-02-29-12-15-00
3969 : 1272
3969 : 1272
3969 : 1272

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

3969:1272
3969:1272
3969:1272

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

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

2 个答案:

答案 0 :(得分:12)

这可能对您有用:

awk -F'^'  '{print $1":"$2}' SERVER_2012-02-29-12-15-00
3969:1272
3969:1272
3969:1272

要使用:连接字段,请删除,

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

awk -F'^' -vOFS='' '{print $1",:,"$2}' SERVER_2012-02-29-12-15-00
3969:1272
3969:1272
3969:1272

答案 1 :(得分:5)

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

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

  

print expr-list

     

打印表达式。每个表达都是分开的                         通过OFS变量的值。输出                         记录以ORS的值终止                         变量

awk中的字符串连接运算符不是昏迷,+,而空格str = str1 str2连接str1和{{1} }。