【问题标题】:Change characters in CSV filne - CHR(13)更改 CSV 文件中的字符 - CHR(13)
【发布时间】:2017-03-27 09:48:54
【问题描述】:

我在将文件加载到数据库时遇到问题。问题是某些 Cell(strings) 包含 CHR(13) - 回车。我正在使用 Sql loader 加载文件,但是如果行包含带有 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

【问题讨论】:

    标签: shell csv character-encoding character


    【解决方案1】:

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

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

    我不是 100% 确定您的行尾约定是什么,也许您必须尝试其中一种而不是 [\n\r]+ 部分:

    • \r
    • \n

    脚本用空格替换回车和/或换行的序列,这些序列不是前面有双引号(即[^"] 部分)。

    【讨论】:

    • 我已将 CELL 中的所有值从 \n 更改为 \r,现在它的工作完美:) 我为此目的使用了 python
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 2015-10-05
    • 2014-04-26
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    相关资源
    最近更新 更多