繁体   English   中英

使用 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

源自:如何将共享唯一 ID 的行合并到逗号分隔的表中


请参阅: 8 个强大的 awk 内置变量——FS、OFS、RS、ORS、NR、NF、FILENAME、FNR

使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM