gpt4 book ai didi

linux - 如何使用 awk 比较 CSV 列?

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:47 26 4
gpt4 key购买 nike

我收到这样的 CSV:

column$1,column$2,column$
john,P,10
john,P,10
john,A,20
john,T,30
john,T,10
marc,P,10
marc,C,10
marc,C,20
marc,T,30
marc,A,10

我需要对值求和并显示名称和结果,但是 column$2 需要显示值 T 与值 P、A、C 分开的总和。输出应该是这样的:

column$1,column$2,column$3,column$4
john,PCA,40
john,T,40,CORRECT
marc,PCA,50
marc,T,30,INCORRECT

我所能做的就是从原始 csv 中提取我需要的列:

    awk -F "|" '{print $8 "|" $9 "|" $4}' input.csv >> output.csv

也按正确的列排序:

sort -t "|" -k1 input.csv >> output.csv

并在 csv 的末尾添加一个新列:

awk -F, '{NF=2}1' OFS="|" input.csv >> output.csv

我设法按列 $1 和 $2 求和并显示总和,但我不知道如何对列 $2 中的不同值进行分组:

awk -F "," '{col[$1,$2]++} END {for(i in col) print i, col[i]}' file > output

最佳答案

Awk 是面向流的。它处理输入并输出您更改的内容。它不会在文件更改中执行。

你只需要添加相应的打印

awk '{if($2 == "T") {print "MATCHED"}}'

如果你想输出比“匹配”更多的内容,你需要将它添加到打印中例如'{打印 $1 "|"$2“|” $3“|” “匹配”}'

或者使用 print $0 作为上面提到的注释。

关于linux - 如何使用 awk 比较 CSV 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35639277/

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