假设你有一个这样的文件:
NW_006521251.1 428 84134
NW_006521251.1 511 84135
NW_006521038.1 202 84155
NW_006521038.1 1743 84153
NW_006521038.1 1743 84154
NW_006520495.1 198 84159
NW_006520086.1 473 84178
NW_006520086.1 511 84180
我想保留基于第 1 列和第 2 列的唯一行(即不仅仅是第 2 列,因为该数字可能在第 1 列的不同标签下重复)。
这样我得到这个作为输出(NW_006521038.1 1743
从列表中删除第二个重复):
NW_006521251.1 428 84134
NW_006521251.1 511 84135
NW_006521038.1 202 84155
NW_006521038.1 1743 84153
NW_006520495.1 198 84159
NW_006520086.1 473 84178
NW_006520086.1 511 84180
有没有办法用 awk 做到这一点?使用uniq file
不起作用。
正是为此,有一个“著名的” awk 习语。你想做:
这将创建一个以 2 列作为键的关联数组“可见”。使用后增量运算符,以便在您第一次遇到该键时,该值为零。第一次看到密钥时,使用否定运算符获得“真”结果。
如果您不介意对输出进行排序:
-u
- 独特的-k1,2
- 将字段 1 和 2 一起用作键