从Google表格导出的CSV中删除换行符

时间:2017-10-06 15:17:35

标签: sed google-sheets newline

我有一些格式的数据:

-e, 's/,Chalk/,Cheese/g'

-e, 's/,Black/,White/g'

-e, 's/,Leave/,Remain/g'

在文件data.csv。

使用Gitbash,我使用file命令发现这是带有CRLF终止符的ASCII文本。如果我也使用命令cat -v,我在Gitbash中看到每一行结束^ M。

我想删除那些终结符,留下一行。

我尝试过以下方法:

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

注意将\ r \ n放在单引号中,以便按字面处理反斜杠,但它不起作用。没有错误,只是没有效果。

我正在使用Gitbash for Windows。

1 个答案:

答案 0 :(得分:1)

引号内的引号互相取消,因此您实际上撤消了换行符中sed命令的引号。您可以转义's|'\''\r\n'\''||g'之类的引号,但这只会将它们包含在字符串中,这与您案例中的任何内容都不匹配。

但这不是唯一的问题;默认情况下,sed仅处理换行符之间的字符串。

如果您拥有sed的GNU版本,如果文件很大,并且确保该文件不包含空字符的数据,那么请尝试添加the -z argument,例如:

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

虽然我猜你可能也想用逗号替换它:

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

对于非GNU版本的sed,您可以更轻松地使用tr,例如:

tr '\r\n' ',' data.csv > output.csv