2010-05-10 72 views
0

我有一个制表符分隔文件(MySQL Out文件)。制表符分隔为逗号UNIX中的分隔文件 - 一个班轮?

我想将其转换为CSV文件。除了将NULL替换为空白或空格外,我得到了所有的工作。

我所拥有的是:sed -e 's/^/"/; s/$/"/; s/\t/","/g;' <file.csv> file1.csv

如何同时更换同一行空值。

以下不起作用。

sed -e 's/NULL//; s/^/"/; s/$/"/; s/\t/","/g;' <file.csv> file1.csv 

任何输入,非常感谢。

谢谢!

+3

我有责任指出,尝试这样做几乎不是一个好主意。人们总是会认为“哦,这是一个[CT] SV文件,解析起来微不足道”,而且很少。文字标签将被引用,但是您仍然将它们转换为逗号。此外,文件中现有的逗号没有被引用,因此您最终会得到比您应该拥有的字段更多的字段 – 2010-05-10 21:48:46

+0

您能详细说明它如何删除NULL吗?也许给一对之前和之后的一对?这不仅仅是一个缺少'g'的问题,是吗? – Beta 2010-05-10 21:55:46

+0

@贝塔:我认为你是对的。你应该发布一个显示“g”的答案:'s/NULL // g' – 2010-05-10 22:20:45

回答

0

你不能用sed来做到这一点。

#!/usr/bin/env python 

import sys, csv 

reader = csv.reader(open(sys.argv[1], 'rb'), delimiter="\t", escapechar="\\") 
writer = csv.writer(open('output.csv', 'wb')) 
for row in reader: 
    writer.writerow(row) 
0

难道你没有忘记把'g'修饰符放在那里吗?

sed -e 's/NULL//g; s/^/"/; s/$/"/; s/\t/","/g;' <file.csv> file1.csv