gpt4 book ai didi

linux - 根据组键对文本数据进行分组的命令行工具

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

我想找到一个文本处理实用程序,它可以将同一主键的属性的所有值分组。环境是Linux。

考虑一个包含“记录”的文本文件,每条记录都是文件中的一行。这些记录是以空格分隔的数值序列,其中一个是主键值,其他是主键的附加属性或为此主键计算的属性。示例:

pkey pkey-prop1 pkey-prop2 attr1 attr2 attr3 attr4
100 200 400 0.1 0.2 0.3 0.4
100 200 400 0.2 0.7 0.4 0.5
100 200 400 0.3 0.4 0.5 0.6
101 200 401 0.7 0.8 0.9 1.0
101 200 401 0.8 0.9 1.0 1.1
101 200 401 0.9 1.7 1.1 1.2

通过指定哪个列扮演pkeypropertyattribute的角色,我想从中获取某个属性的分组属于同一主键的所有记录。例如,对于 pkey=$1property=$2 $3attribute=$5,结果将是:

100 200 400 0.2 0.7 0.4
101 200 401 0.8 0.9 1.7

也就是说,所有具有pkey=100 属性的行被分组到一行中,所有具有pkey=101 属性的行也被分组到另一行中。

我不期望有一个精确的工具,但我很高兴有一个至少可以进行分组的工具。

最佳答案

awk '
x==$1 && y==$2 && z==$3 {
printf(" %s", $5)
next
}

{
x=$1
y=$2
z=$3
printf("%s%s %s %s %s", NR==1?"":"\n", x,y,z,$5)
}

END{
print ""
}' input.txt

100 200 400 0.2 0.7 0.4
101 200 401 0.8 0.9 1.7

关于linux - 根据组键对文本数据进行分组的命令行工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9793188/

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