2017-10-06 120 views
0

我在格式一些數據導出。刪除換行符從谷歌表

使用Gitbash,我使用file命令來發現這是帶有CRLF終止符的ASCII文本。如果我也使用命令cat -v,我會在Gitbash中看到每行結束^ M。

我想刪除這些終止,留下一行。

我已經試過如下:

sed -e 's/'\r\n'//g' <data.csv> output.csv 

小心把\ r \ n的,以便反斜線字面對待,但它不工作單引號。沒有錯誤,只是沒有效果。

我使用Gitbash爲Windows。

+0

爲什麼不'CLEAN'數據導出到csv之前? –

+0

也許我誤解了你的觀點,但無論我在Google表格中做什麼,它仍然會以CSV格式與行終止符一起出現,這是問題所在。 –

+0

你不會把'\ r \ n'放在單引號內,你把它們放在單引號之外。這聽起來像你只需要運行'dos2unix'。 –

回答

0

引號內的引號互相取消,所以你實際上撤消了換行符的sed命令的引號。你可以跳過像's|'\''\r\n'\''||g'這樣的引號,但是這隻會將它們包含在字符串中,這與您的案例中的任何內容都不匹配。

但是,這並不是唯一的問題; sed默認只處理換行符之間的字符串。

嘗試添加-z argument to sed,如:

sed -z -e 's|\r\n||g' <data.csv> output.csv

雖然我猜你可能也需要用逗號來替代它:

sed -z -e 's|\r\n|,|g' <data.csv> output.csv

+0

非常感謝@svenper:這看起來很有效,雖然有些文本編輯器似乎還認爲有換行符,而其他編輯則不行。但是,根據貓和文件命令,休息時間已經過去了。 –

+0

您應該提到'-z'會將整個輸入文件讀入內存,如果文件很大,這可能是不可取的。另外,我認爲'-z'是GNU專用的,所以如果它是真的,也應該說明。 –