记录去重

背景说明

case_1-1.data

05091D2A0000
3BC30ECC0000
B9CC86880000
0661688C0000
00E0621101AC
3BC30ECC0000
003018AA322A

有上述这样一个包含了设备id信息的列表文件 devices.txt,但其中有同个设备id多次出现的情况,现在要求去除这些重复出现的设备行,得到一个只包含唯一设备id信息的列表文件。

问题分析

这是很典型的去重应用,借助于awk数组下标可以为字符串的特性,在不考虑机器内存占用的情况下只需要简单几步:

  1. 按行遍历设备列表文件;
  2. 将每行的第1个域的值作为数组下标进行保存;
  3. 遍历数组下标,进行输出保存。

解决方案

case_1-1.awk

BEGIN{
}
{
    ++ids[$1];
}
END{
    for ( key in ids ) {
            print(key) > "/tmp/test/uniq.txt"
    }
}

$awk -f case_1-1.awk case_1-1.data

代码很简单,如果说需求改成获取其中重复出现次数超过10次的设备列表,只需要在输出行前加上判断条件if(ids[key]>10){...}即可。

results matching ""

    No results matching ""