如何在Linux中删除具有n列的相等行

问题描述

我有一个文件(df.txt),其中包含3045行和900.000列,但包含145个重复行,因此:

 1234  1111122233330000000000003333311122222............................
    1235678 00000000000000000000000111111122222............................
    4567  1122222222222222222222223333333333333............................
    3456  111111111111111122222222222222222222............................
    1234 1111122233330000000000003333311122222............................
    1235678 00000000000000000000000111111122222............................
    3423 33333333300000000011111112222222222222............................
    2211 11111111111111111111111111111111111111............................

因此,新文件(dffinal.txt)在第1列中不应包含重复信息,例如:

 1234  1111122233330000000000003333311122222............................
    1235678 00000000000000000000000111111122222............................
    4567  1122222222222222222222223333333333333............................
    3456  111111111111111122222222222222222222............................
    3423 33333333300000000011111112222222222222............................
    2211 11111111111111111111111111111111111111............................

我尝试

cat df.txt | sort |uniq > dffinal.txt 

但它保持相同的行数

解决方法

您可以使用awk检查第1列中的重复项。

awk '!a[$1] { a[$1]++; print }' df.txt > dffinal.txt

这会记住a数组中的第一列。如果该列尚未在其中,则将其保存并打印该行。因此,它会打印出任何重复键的第一个实例。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...