2013-02-27 102 views
0

我有一個正在運行,並給予一個CSV文件作爲輸出在下面的格式需要對齊CSV文件格式正確

25-02-2013   
RJ   
D204349194   
Pagamento Caixa              0 
      256.31 -256.31  

一個劇本,但我需要在下面的格式排列:

25-02-2013 RJ D244728244 Pagamento Banco Brasil 0 403.25 -403.25 

裝置,如在Excel中應該分爲列

如果請建議我

+2

將256.31轉換爲403.25的神奇轉換是什麼? – 2013-02-27 13:36:43

回答

1

您安裝column,試試這個行:

awk '{printf $0}' file|column -t 

您例如:

kent$ cat file 
25-02-2013   
RJ   
D204349194   
Pagamento Caixa              0 
      256.31 -256.31 

kent$ awk '{printf $0}' file|column -t 
25-02-2013 RJ D204349194 Pagamento Caixa 0 256.31 -256.31 
+0

您的輸入文件中必須有空格。或者你正在使用不同的'awk'。另外,如果輸入不以換行符結尾(在OS X上),則「列」效果不佳。 – 2013-02-27 13:41:28

+0

@WilliamPursell好點!我的awk是gnu awk 4.我檢查了輸入的問題,有尾隨空格。這就是爲什麼我想出了'printf $ 0'。用'「」'確實比較安全。 – Kent 2013-02-27 14:01:13

0

首先使用tr拉一切成一條線,然後用sed根據現場分裂單行。 嘗試以下操作:

tr '\n' '\t' < file | sed -r 's/([0-9]{2}-[0-9]{2}-[0-9]{4})/\n\1/g' 

這假定:

  • 文件是製表符分隔
  • 每個記錄的第一個字段是形式的日期dd-MM-yyyy
  • 沒有其他除第一個字段外的記錄中的日期
0
awk '{$1=$1; printf $0 " "}' input; echo 

$1=$1會擠壓每行上的空白,並且echo會發出終止換行符。