bash - 如何将额外的分隔符添加到 CSV 文件的末尾,发现某些分隔符丢失了?

标签 bash csv awk

我有一个格式如下的 CSV 文件:

A @ B @ C @ D @ E

它应该有五列,不幸的是,有些缺少最后一列,例如:

A @ B @ C @ D

如何在缺少最后一列的每一行末尾添加额外的 @

最佳答案

假设空格是字段内容的一部分并且分隔符单独为“@”(尽管可以轻松容纳其他变体):

awk 'BEGIN {FS = OFS = "@"} {$5 = $5; print}' inputfile

AWK 创建缺失的中间字段。如果字段已经存在或将其和任何中间创建的字段设置为空字符串,则将字段值设置为自身会保留现有内容。

$ cat inputfile
A @ B @ C @ D @ E
A @ B @ C @ D
A @ B @ C
$ awk 'BEGIN {FS = OFS = "@"} {$5 = $5; print}' inputfile
A @ B @ C @ D @ E
A @ B @ C @ D @
A @ B @ C @@

关于bash - 如何将额外的分隔符添加到 CSV 文件的末尾,发现某些分隔符丢失了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153057/

相关文章:

bash - 如何从文件路径中提取目录路径?

linux - 使用 BASH 脚本重命名多个不同的文件扩展名

linux - 将 bash 变量分配给 X 或 Y

python - 如何对 CSV 文件中具有相同键的后续行进行分组

linux - 求列中字段的平均值

regex - 在sed中,如何表示 "alphanumeric or _ or -"

Python:将数据从 CSV 导入 Postgres 时出错(错误:整数输入语法无效:)

python - 训练 TensorFlow 预测 csv 文件中的列

linux - cut、colrm、awk 和 sed : fail to cut characters from a pipe stream 的奇怪问题

linux - 如何在一个制表符分隔文件中复制行并替换多个字符串