gpt4 book ai didi

linux - 将特定列转换为行

转载 作者:行者123 更新时间:2023-12-02 18:02:12 27 4
gpt4 key购买 nike

我有这个文件(空格分隔):

bc1 no 12
bc1 no 15
bc1 yes 4
bc2 no 8
bc3 yes 14
bc3 yes 12
bc4 no 2

我想得到这个输出:

bc1 3 no;no;yes 31
bc2 1 no 8
bc3 2 yes;yes 26
bc4 1 no 2

第一列:输入文件中第一列出现一次

第二个:输入文件中出现此情况的次数

第三:第三列翻译成带有“;”的行分隔符

第四:最后一列的总和

我可以通过“否/是”栏做我想做的事:

awk -F' ' 'NF>2{a[$1] = a[$1]";"$2}END{for(i in a){print i" "a[i]}}' test.txt | sort -k1,1n

最佳答案

对于显示的示例,请尝试执行以下 awk 代码。由于 $1(第一列) 始终已排序,因此我们不需要对其进行排序,因此在此提出此解决方案。

awk '
prev!=$1 && prev{
print prev OFS count,value,sum
count=sum=0
prev=value=""
}
{
prev=$1
value=(value?value ";":"") $2
count++
sum+=$NF
}
END{
if(prev){
print prev OFS count,value,sum
}
}
' Input_file

关于linux - 将特定列转换为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74126707/

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