2010-08-23 30 views
0

我有一個csv文件,其中已經爬過一些^ M dos線路結束,我想擺脫它們,以及16個空格和3個選項卡跟隨。比如,我必須將該行與下一行合併。這裏有一個違規記錄和良好的一個作爲我的意思樣本:最好的工具來刪除DOS線路末端,並再次加入線路

"Mary had a ^M 
        little lamb", "Nursery Rhyme", 1878 
"Mary, Mary quite contrary", "Nursery Rhyme", 1838 

我可以去掉^ M使用sed的,你可以看到,但我不能工作,如何RM的尼克斯線年底加入線路備份。

sed -e "s/^M$    //g" rhymes.csv > rhymes.csv 

UPDATE

然後我在雙引號現場讀取「不過,微軟CSV格式允許嵌入的換行符。如果場中的嵌入式換行符是爲您的數據的可能性,你應該考慮使用其他的東西而不是sed來處理數據文件。「從: http://sed.sourceforge.net/sedfaq4.html

因此編輯我的問題,問我應該使用哪個工具?

+0

SED版本4.1.2在RHCE – Cups 2010-08-23 17:28:45

回答

2

How can I replace a newline (\n) using sed?的幫助,我這個做一個:

sed -e ':a;N;$!ba;s/\r\n    \t\t\t/=/' -i rhymes.csv 

<CR> <LF> <16 spaces> <3 tabs>

如果你只是想刪除CR,您可以使用:

<yourfile tr -d "\r" | tee yourfile 

(或者如果兩個輸入和輸出文件不同:<yourfile tr -d "\r" > output

+0

我試過了,它不適合我,最接近的是用ctrl-v ctrl-m生成^ M – Cups 2010-08-23 17:52:07

+0

對不起,現在更新我的文章。 – Lekensteyn 2010-08-24 07:28:49

+0

tr是整齊的,但它沒有加入線。 sed解決方案工作 - 我可以繼續使用tr來遍歷文件中的任何連續空格,非常感謝。 – Cups 2010-08-24 15:41:05

2
dos2unix file_name 

轉換文件,或

dos2unix old_file new_file 

創建新的文件。

+0

謝謝。它給我留下了重新識別並在記錄中間刪除該行結束的問題。 – Cups 2010-08-24 15:42:54