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

How remove equal rows having n columns in Linux

我有一个包含 3045 行和 900.000 列的文件 (df.txt),但有 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[] { a[]++; print }' df.txt > dffinal.txt

这会记住 a 数组中的第一列。如果该列不在其中,它会保存它并打印该行。所以它会打印任何重复键的第一个实例。