如何删除 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
数组中的第一列。如果该列不在其中,它会保存它并打印该行。所以它会打印任何重复键的第一个实例。
我有一个包含 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
数组中的第一列。如果该列不在其中,它会保存它并打印该行。所以它会打印任何重复键的第一个实例。