【发布时间】:2011-03-30 20:33:07
【问题描述】:
给定一个带有“名称”和“日期”两列的制表符分隔的文本文件:
Sam 20100101
Sam 20100101
Sam 20100102
George 20100101
George 20100101
George 20100102
我可以使用 awk 来添加带有分区运行总计的第三列,例如为第一列和第二列的每个不同模式从 0 开始计数器,然后为模式的任何重复而递增?
Sam 20100101 1
Sam 20100101 2
Sam 20100102 1
George 20100101 1
George 20100101 2
George 20100102 1
我在 SQL 中这样做:select row_number() over (partition by column 1, column 2 order by column 10) from table
但我需要一个替代方案 - 不一定是 awk,但我想到了 - 对于 SQL 未处理的文本文件。文本文件约为 50GB,每个文件约有 2 亿行。
我使用计数器来删除重复的行。我知道,鉴于上面的示例,这可以通过以下方式完成:
排序 myfile.txt | uniq -u
但我的文本文件有我的示例中未包含的附加列(为简洁起见),可能不会产生完全重复的行。
我是否应该添加一个参数以仅匹配
中的名称和日期列排序 myfile.txt | uniq -u
命令?啊?还有什么?
【问题讨论】: