我想找到一个文本处理实用程序,它可以为同一个主键分组属性的所有值。环境就是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
通过指定哪个列扮演pkey
,property
和attribute
的角色,我想从属于同一主要记录的所有记录中获取某个属性的分组键。例如,对于pkey=$1
,property=$2 $3
,attribute=$5
,结果将为:
100 200 400 0.2 0.7 0.4
101 200 401 0.8 0.9 1.7
也就是说,从具有pkey=100
属性的所有行分组到一行,从pkey=101
的所有行,它们也被分组到另一行。
我不希望有一个确切的工具,但我很乐意拥有一个至少可以分组的工具。
答案 0 :(得分:2)
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