gpt4 book ai didi

linux - 在 Linux 中将相关数据行分组到单个列中

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:25 25 4
gpt4 key购买 nike

我有一个每天自动生成的 csv 文件,其输出类似于以下示例:

"N","3.5",3,"Bob","10/29/17" 
"Y","4.5",5,"Bob","10/11/18"
"Y","5",6,"Bob","10/28/18"
"Y","3",1,"Jim",
"N","4",2,"Jim","09/29/17"
"N","2.5",4,"Joe","01/26/18"

我需要转换文本,以便它按人员分组(第四列),并且所有记录都在一行中,并且在列中使用相同的顺序重复:1,2,3,5。某些单元格可能缺少数据,但必须保留在序列中,以便各列对齐。所以我需要的输出将如下所示:

"Bob","N","3.5",3,"10/29/17","Y","4.5",5,"10/11/18","Y","5",6,"10/28/18"
"Jim","Y","3",1,,"N","4",2,"09/29/17"
"Joe","N","2.5",4,"01/26/18"

我愿意使用 sed、awk 或几乎任何标准 Linux 命令来完成此任务。我一直在尝试使用 awk,虽然我已经很接近了,但我不知道如何完成它。

这是我接近的命令。它列出了标题和名称,但没有其他数据:

awk -F"," 'NR==1; NR>1 {a[$4]=a[$4] ? i : ""} END {for (i in a) {print i}}' test2.csv

最佳答案

您需要更多代码

$ awk 'BEGIN {FS=OFS=","} 
{k=$4; $4=$5; NF--; a[k]=(k in a?a[k] FS $0:$0)}
END {for(k in a) print k,a[k]}' file

"Bob","N","3.5",3,"10/29/17" ,"Y","4.5",5,"10/11/18" ,"Y","5",6,"10/28/18"
"Jim","Y","3",1, ,"N","4",2,"09/29/17"
"Joe","N","2.5",4,"01/26/18"

请注意,NF-- 技巧可能不适用于所有 awk

关于linux - 在 Linux 中将相关数据行分组到单个列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53198681/

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