如何在CSV文件的末尾添加额外的分隔符有些被发现缺失?

Vil*_*age 4 csv bash awk

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

A @ B @ C @ D @ E
Run Code Online (Sandbox Code Playgroud)

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

A @ B @ C @ D
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*ce. 7

假设空格是字段内容的一部分,分隔符仅为"@"(尽管可以轻松容纳其他变体):

awk 'BEGIN {FS = OFS = "@"} {$5 = $5; print}' inputfile
Run Code Online (Sandbox Code Playgroud)

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 @@
Run Code Online (Sandbox Code Playgroud)