[英]how to select rows with max value based on one column and group by second column using awk?
[英]Using AWK to merge unique rows based on column one
我正在尝试编写一个 AWK 脚本来汇总大文本文件中的数据。 结果数据的顺序很重要,所以我不能使用排序。
我尝试了 FNR==NR 的不同变体,但没有任何运气
输入文件
Height 3.5
Weight 12.3
Age 23
:
:
Height 4.5
Weight 15.5
Age 31
:
:
预期产出
Height 3.5 4.5
Weight 12.3 15.5
Age 23 31
使用 awk:
awk '{a[$1]=a[$1] FS $2} END{for(i in a) print i a[i]}' file
输出:
Weight 12.3 15.5 Height 3.5 4.5 : Age 23 31
使用awk 的数组,您可以对值进行分组。
这是一个简化版:。
BEGIN {
summary["Weight"] = "Weight";
...
}
{
summary[$1] = summary [$1] " " $2
}
END {
print summary["Weight"];
...
}
这不是 awk,但可能对您有用(GNU sed):
sed -E 'H;g;s/((\n\S+)[^\n]*)(.*)\2(.*)/\1\4\3/;h;$!d;x;s/.//' file
使用保留空间收集每个键的结果,并在文件末尾删除引入的换行符并打印结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.