从文本文件创建CSV文件

时间:2015-12-03 05:49:01

标签: shell

我有以下格式的文本文件

2015-04-21
00:21:00
5637
5694
12
2015-04-21
00:23:00
5637
5694
12

我想创建一个类似下面的csv文件 -

2015-04-21,00:21:00,5637,5694,12
2015-04-21,00:23:00,5637,5694,12

我使用了tr和sed这样 -

cat file | tr '\n' ',' | sed 's/,$//'

结果如下 -

2015-04-21,00:21:00,5637,5694,12,2015-04-21,00:23:00,5637,5694,12

但在第5列之后没有新行。

建议解决方案。

2 个答案:

答案 0 :(得分:1)

像这样使用awk

awk 'ORS=NR%5 ? "," : "\n"'

$ cat test.txt
2015-04-21
00:21:00
5637
5694
12
2015-04-21
00:23:00
5637
5694
12

$ awk 'ORS=NR%5 ? "," : "\n"' test.txt
2015-04-21,00:21:00,5637,5694,12
2015-04-21,00:23:00,5637,5694,12

说明:

  • ORS代表输出记录分隔符
  • NR是记录数
  • NR%5 - %是模运算符。如果它为零(每5条记录),请使用换行。否则,请使用逗号

答案 1 :(得分:0)

python中的一个简单解决方案

fin = open('file','r')
fout = open('outputfile','w')
a=[]
i=0
for line in fin:
    a.append(line.rstrip())
    i+=1
    if i==5:
        fout.write(','.join(a)+'\n')
        a=[]
        i=0
fin.close()
fout.close()