【问题标题】:Sed replace character tab delimited csvsed 替换字符制表符分隔的 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 个或更多字符,例如。 "~" 输出分隔符不是我所期望的。

标签: shell csv unix ssh sed


【解决方案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

"~ 可以不转义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-13
    • 2018-12-21
    • 1970-01-01
    • 2013-06-11
    • 2012-10-22
    • 2013-10-15
    • 2021-02-23
    • 2020-05-04
    相关资源
    最近更新 更多