gpt4 book ai didi

awk - 在每行末尾添加分隔符

转载 作者:行者123 更新时间:2023-12-04 13:39:26 25 4
gpt4 key购买 nike

我有一个如下所示的 csv 文件。

id,id1,id2,id3,id4,id5
1,101,102,103,104
2,201,202,203
3,301,302

现在我想在每一行中添加逗号 (,) 以使所有行具有相同数量的分隔符。所以期望的输出应该是。

id,id1,id2,id3,id4,id5
1,101,102,103,104,
2,201,202,203,,
3,301,302,,,

使用

awk -F "," ' { print NF-1 } ' file.csv | sort -r | head -1

我能够找到分隔符的最大出现次数,但不确定如何比较每行并在其小于最大值时附加逗号。

最佳答案

使用 GNU awk(因为我不知道这是否适用于其他实现)

$ # simply assign value to NF
$ awk -F, -v OFS=',' '{NF=6} 1' ip.txt
id,id1,id2,id3,id4,id5
1,101,102,103,104,
2,201,202,203,,
3,301,302,,,

如果第一行确定了所需的字段数:

$ awk -F, -v OFS=',' 'NR==1{f=NF} {NF=f} 1' ip.txt
id,id1,id2,id3,id4,id5
1,101,102,103,104,
2,201,202,203,,
3,301,302,,,

如果任何一行确定最大字段:

$ cat ip.txt 
id,id1,id2
1,101,102,103
2,201,202,203,204
3,301,302

$ awk -F, -v OFS=',' 'NR==FNR{f=(!f || NF>f) ? NF : f; next} {NF=f} 1' ip.txt ip.txt
id,id1,id2,,
1,101,102,103,
2,201,202,203,204
3,301,302,,

关于awk - 在每行末尾添加分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48879413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com