bash - 如何更改 CSV 文件的分隔符
问题描述
我需要将 csv 文件的分隔符从 comma(,) 更改为 Pipe(|) Symbol。
注意:这里的文件分隔符也出现在数据字符串中。我需要跳过那个值我尝试了一个命令但它也在改变内幕逗号awk '$1=$1' FS="," OFS=":" Sample.csv
(我试过这个但没有给出预期的输出)
输入 > 样本.csv
Col1, Col2, Col3 , Col4
101, XYZ, 2020 , "Hello, World"
102, PQR, 2021, "Help, Me"
输出 > Sample_Out.csv 应该是这样的。
Col1| Col2| Col3|Col4
101 | XYZ | 2020 | "Hello, World"
102 | PQR |2021 | "Help, Me"
解决方案
您必须采取一些措施来处理这些引用的逗号。您可以开始将它们更改为其他内容:
awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", "§", $i) } 1' Sample.csv
然后您可以将剩余的逗号更改为您想要的任何内容:
awk '$1=$1' FS="," OFS=":" Sample.csv
然后将 § 更改为它之前的逗号
awk '$1=$1' FS="§" OFS="," Sample.csv
我认为您可以制作一个 awk 文件并将所有步骤放入其中。
推荐阅读
- django - 性能:数据库、Django、反向查找还是直接?
- python - 当它在 Python 中显示“TypeError: not enough arguments for format string”时有什么建议吗?
- c# - 如何在.net核心中显示图像
- c++ - VSCode - 区分抽象类和实现
- powershell - 软件正在本地机器上而不是远程安装
- vue.js - Vue JS如何在页数结果中不包含过期的记录
- laravel - Laravel 全站搜索而不是数据库
- c# - Linq Expression is not working for Nullable string field
- sql - 如何从提供的日期(从午夜后 1 秒开始)和迄今为止(在午夜前 1 秒结束)获取 SQL 查询?
- python - 绘制数以百万计的图形