sed 替换字符制表符分隔的 csv

Posted

技术标签:

【中文标题】sed 替换字符制表符分隔的 csv【英文标题】:Sed replace character tab delimited csv 【发布时间】:2021-10-25 04:40:14 【问题描述】:

我对 shell 脚本非常陌生,并且在替换制表符分隔的 csv 字符时遇到问题。

我想将 csv 转换为文本文件并将分隔符从制表符更改为 ~,我尝试了下面的代码,但分隔符结果有所不同,例如日语 char+" 而不是 ~

sed 's/\t/\"\~\"/g' test.csv > test.txt

感谢您的帮助.. 提前致谢

【问题讨论】:

对不起是 sed 's/\t/\"\~\"/g' test.csv > test.txt 我还注意到,如果我用一个字符替换,例如.~ 它工作正常.. 但如果是 2 个或更多字符,例如。 "~" 输出分隔符不是我所期望的。 【参考方案1】:

如果是char换char,使用tr:

cat test.csv | tr '\t' '~' > test.txt

【讨论】:

感谢 Bohemian,我不能使用 tr,因为我需要用字符串替换.. 刚发现文件是 utf-16,所以我需要先转换成 utf-8。之后脚本按预期运行【参考方案2】:

使用iconv 将编码更改为UTF-8:

iconv -f utf-16 -t utf-8 < test.csv | sed 's/\t/"~"/g' > test.txt

"~ 可以不转义。

【讨论】:

以上是关于sed 替换字符制表符分隔的 csv的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 和 pandas 将错误创建的大型 csv 文件转换为制表符分隔文件

制表符分隔文件的 OleDb 连接字符串

字符串 CSV解析 表格 逗号分隔值

CSV (逗号分隔值文件格式)

CSV (逗号分隔值文件格式)

什么是CSV