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的主要内容,如果未能解决你的问题,请参考以下文章