2012-03-01 81 views
4

爲什麼在下面的示例中,在分隔符之前和之後得到空格?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 

回答

10

這可能會爲你工作:

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

連接字段與:刪除,'s。

或者將輸出字段分隔符OFS更改爲空。

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

或將OFS更改爲「:」,只是「打印$ 1,$ 2」 – 2012-03-01 14:47:49

5

解決方案已經給出,但沒有完整的解釋...

這是因爲當你使用print許多參數(昏迷分隔)它把一個字段分隔符值之間。從awk人:

打印expr的列表

打印表達式。每個表達式由OFS變量的值分隔 。輸出 記錄以ORS 變量的值終止。

awk字符串連接運算符是不是昏迷,既不+,但空間str = str1 str2串連str1str2