2013-02-27 107 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会发出终止换行符。