awk - 删除 csv [awk,sed] 中未执行列中的逗号
问题描述
有没有一种简单的方法可以删除 csv 中不应该使用 AWK/SED 的逗号?
.csv 由 5 列组成,但额外的逗号使某些行包含 6 列。例如见下文,我希望第三列是数字,但如您所见,第 3 行和第 4 行是字符串。
4,abc,323,123,acvd
4,abc,323,123,acvd
4,ab,c,323,123,acvd
4,db,c,323,123,acvd
我不想过度设计我可以使用 pandas / python 的解决方案。
它也是一个非常大的文件 5GB 文件,百万 + 行所以不是我可以在 excel 中打开的东西。
所需的输出将是添加添加字符串或删除它,即
4,abc,323,123,acvd
4,abc,323,123,acvd
4,abc,323,123,acvd
4,dbc,323,123,acvd
4,abc,323,123,acvd
4,abc,323,123,acvd
4,ab,323,123,acvd
4,db,323,123,acvd
解决方案
由于删除额外字段是您可以接受的选项:
$ awk 'BEGIN{FS=OFS=","} {print $1, $2, $(NF-2), $(NF-1), $NF}' file
4,abc,323,123,acvd
4,abc,323,123,acvd
4,ab,323,123,acvd
4,db,323,123,acvd
否则:
$ awk 'BEGIN{FS=OFS=","} {print $1, $2 (NF>5 ? $3 : ""), $(NF-2), $(NF-1), $NF}' file
4,abc,323,123,acvd
4,abc,323,123,acvd
4,abc,323,123,acvd
4,dbc,323,123,acvd
推荐阅读
- mysql - 如何使用 Toad for MySQL 更改 Magento 2 auto_increment 值?
- sapui5 - 在 sapui5 中构建智能表需要哪种 odata 格式?
- python - 如何使用 Span 格式从 QtableWidget 打印数据?
- javascript - 如何调试 LG Webos Chromium 浏览器?(模拟器)
- extjs - Extjs 6在构建时出现Java堆空间错误
- swift - 如何在swift中将任何文本字段字符串值导出到csv时限制“字符更改为”?
- c++ - 使用 mysql c++ 连接器的未定义引用
- javascript - Adobe CC 动作呈现在 HTML5 Canvas 中
- ios - 这部分在 iPhone 屏幕上叫什么?想用它来决定屏幕是否是主屏幕
- xml - Xslt 返回空的 xml