2010-05-10 73 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