bash - 添加尾随逗号以确保 .csv 行具有相同的列数
问题描述
我有一个逗号分隔的文件,其中行的列数是奇数。
我想添加尾随逗号(带有空值),以便每列具有最大列数。
我目前有:
i1, 12, 15
i2, 00, 01
i3
i4, 18, 21, 36
这只是一个示例,实际文件的最大列数有所不同。
对于上面的例子,我想要的输出是:
i1, 12, 15,
i2, 00, 01,
i3, , ,
i4, 18, 21, 36
先感谢您!
解决方案
您可以使用 awk 来完成这项工作:
$ awk 'BEGIN{FS=OFS=", "}NF<=3{for(i=NF+1;i<=4;i++)$i=" "}7' file
i1, 12, 15,
i2, 00, 01,
i3, , ,
i4, 18, 21, 36
注意在第 1 行和第 2 行中,如果确实有两个尾随空格,您可以添加一个sub(/ *$/,"")
推荐阅读
- c++ - 常量表达式中的非文字类型“比较”
- ssl - 无法通过其通用名称访问服务器
- javascript - 为什么我的 create-react-app 项目在编译时会输出数千行关于类型的警告?
- laravel - 如何将此 SQL 语句转换为 laravel 代码?
- php - 尝试通过 HTML 表单更新 SQL DATE 列;这甚至可能吗?
- unity3d - 当应用程序在真机上“构建并运行”时,我在游戏屏幕上运行的项目被粉碎?
- java - 将rest url中的请求参数转换为对象
- c# - 在 Azure 函数中读取应用程序设置时遇到问题
- sql - 如何查询,“如果此列包含'this',则替换另一列中的文本”
- javascript - NuxtJs vue-flip 不在正面和背面之间翻转