从文件中删除重复的行(仅第一部分)

时间:2016-07-04 17:41:29

标签: list awk format duplicates

我有一个像这样的列表

ABC|Hello1
ABC|Hello2
ABC|Hello3
DEF|Test
GHJ|Blabla1
GHJ|Blabla2

我希望它是这样的:

ABC|Hello1
DEF|Test
GHJ|Blabla1

所以我想在:|之前删除每行中的重复项 并且只让第一个出现在那里。

1 个答案:

答案 0 :(得分:1)

使用awk

的简单方法
 $ awk -F"|" '!seen[$1]++ {print $0}' file
 ABC|Hello1
 DEF|Test
 GHJ|Blabla1

这里的技巧是在这种情况下设置适当的字段分隔符"|",之后可以从$1开始逐列访问各列。在这个答案中,我维护一个唯一值数组seen并仅在以前没有看到来自$1的值时打印该行。