根据固定长度文件的列删除重复行

时间:2017-06-29 21:08:35

标签: unix awk sed

我有一个固定长度的文件,主键是1-8。没有分隔符。我希望通过消除第二次出现来消除重复。在unix中寻找解决方案。

文件如下所示:

A00991CCAGXCD K 9999PHLX CANADIAN DOLLAR        F
G0084W10%AEURN  4612EURONAV NV ANTWERPEN        F
D1819089%ADB    6021DEUTSCHE BANK AG            F
G0084W10GAADNT  6799ADIENT PLC                  F
D1F19089NADB    6021DEUTSCHE BANK AG            F

输出扩展名为:

A00991CCAGXCD K 9999PHLX CANADIAN DOLLAR        F
G0084W10%AEURN  4612EURONAV NV ANTWERPEN        F
D1819089%ADB    6021DEUTSCHE BANK AG            F
D1F19089NADB    6021DEUTSCHE BANK AG            F

1 个答案:

答案 0 :(得分:2)

awk 解决方案:

awk '!a[substr($1,1,8)]++' file

输出:

A00991CCAGXCD K 9999PHLX CANADIAN DOLLAR F
G0084W10%AEURN 4612EURONAV NV ANTWERPEN F
D1819089%ADB 6021DEUTSCHE BANK AG F
D1F19089NADB 6021DEUTSCHE BANK AG F
  • substr($1,1,8) - 从第1个字段$1返回8个字符长的子字符串(从第1个字符开始)

  • !a[...]++ - 仅考虑第一次出现的唯一数组索引