更改CSV filne中的字符 - CHR(13)

时间:2017-03-27 09:48:55

标签: shell csv character-encoding character

我在将文件加载到数据库时遇到问题。问题是一些Cell(字符串)包含CHR(13) - 回车。我正在使用Sql加载器加载文件,但是如果行包含带有CHR(13)的字符串,它会变得混乱并且脚本认识到CHR(13)是行的结尾(而不是字符串的结尾),所以在结果中我有25行来自文件包含20行。

我想将CHR(13)更改为CHR(32) - 空格,但我不知道该怎么做。如果我将所有CHR(13)更改为CHR(32),我将降低所有行(因此我的文件将只包含1行)。我怎么能聪明地做到这一点?我想只删除其他CHR(13)。

示例我的文件如何:

"Title 1","Title 2","Title 3","Title 4"
"Value 1",,"Value 3","Value 4"
"Value 1",""Value 2","Value 3","Value 4"
"Value 1,""Value
asfsafsaf","Value 3,"Value 4" <--- There is problem

1 个答案:

答案 0 :(得分:0)

使用GNU sed,您可以这样做:

sed -zr 's/([^"])[\n\r]+/\1 /g' yourfile > yourmodified_file

我不是100%肯定你的行结束约定,也许你必须尝试其中一个而不是[\n\r]+部分:

  • \r
  • \n

脚本替换了cariage返回和/或换行的序列,其中前面有双引号(即[^"]部分),带有空格。