我的输入如下所示,我只需要保留第二列中的唯一字符串,其中第一列将成为每个唯一字符串的所有值的总和。
例如:取OIA
第二列中的 并从第一列添加 OIA 的相应值并在之前打印OIA
。
输入:
1079 OIA
1079 OIA
975 OIA
975 OIA
372 CLN
243 TLN
224 TLN
224 TLN
224 TLN
224 TLN
224 TLN
224 TLN
224 TLN
224 TLN
224 TLN
224 TLN
预期输出:
4108 OIA
372 CLN
2483 TLN
对于大多数使用空格分隔的列的情况,这应该可以正常工作。
假设您的输入始终按示例输入中所示的第二列值分组:
上面的内容几乎不会在内存中保留任何内容,因此适用于任意大的文件,并且将以与输入 $2 值相同的顺序生成输出。
假设数据在第二列上排序,使用 GNU
datamash
:这会将输入读取为空格分隔的字段,按第二个字段对数据进行分组,并对每个组的第一个字段求和。
给定问题中数据的输出将以制表符分隔:
请注意,这些字段与问题中的预期内容交换。要解决此问题,并对第二个字段上的输入数据进行排序(以防它可能不像问题中那样整齐地排序):