我有一个文件有很多这样的记录:
|1|a|b|c|||||||
|1||||aa|bb|cc||||
|1|||||||aaa|bbb|ccc|
|2|fd|ef|gf|||||||
|1||||zz|yy|dd||||
我需要合并第一个字段中具有相同值的记录,以便理想情况下看起来像这样(假设最后一个记录是最新的):
|1|a|b|c|zz|yy|dd|aaa|bbb|ccc|
|2|fd|ef|gf|||||||
我一直在想最好的办法。我考虑过将所有内容放在一个数据库表中,使用第一个字段作为主键,我还研究了perl中的哈希。。。但没有什么听起来是理想的。思想?用perl或python编写的东西会很好,但我对几乎所有可以在unix上运行的东西都持开放态度。你知道吗
谢谢!你知道吗
下面是一个python脚本。你知道吗
只有当节不是按行的顺序为空时,它才会覆盖。你知道吗
如果键都是小数字,那么可以使用数组而不是散列来保存合并的行,从而稍微提高速度。你知道吗
split
删除空的尾部字段,因此|1|a|b|c|||||||
与|1|a|b|c
相同。你知道吗$z = $x ||= $y;
和$x ||= $y; $z = $x;
是一回事$x ||= $y;
与$x = $x || $y;
基本相同;如果LHS为false,它将RHS分配给LHS。在上下文中,如果这是我们第一次遇到$merged_rows{$id} = [];
,那么它确实是$id
。你知道吗[]
创建一个空数组并返回对它的引用。你知道吗输出
|1|a|b|c|zz|yy|dd|aaa|bbb|ccc| |2|fd|ef|gf|||||||
相关问题 更多 >
编程相关推荐