2017-10-06 79 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专用的,所以如果它是真的,也应该说明。 –