Другой подход python:
читает список файлов уникальных вхождений первого списка столбцов, первое вхождение в список#!/usr/bin/env python3
import sys
file = sys.argv[1]
with open(file) as src:
lines = src.readlines()
for l in [[l for l in lines if l.startswith(f)][0] for f in set([l.split()[0] for l in lines])]:
print(l, end = "")
Запустите его с текстовым файлом в качестве аргумента: [ ! d5]
python3 <script> <text_file>
Хотя вышеприведенный вариант оказывается быстрым (проверено в файле> 1000000 строк), он может быть значительно быстрее (примерно 15% в тесты, которые я выполнил), если мы можем предположить, что строка в первом столбце не встречается на других позициях в записях (вероятно, это безопасное предположение). В этом случае мы можем пропустить функцию startswith():
#!/usr/bin/env python3
import sys
file = sys.argv[1]
with open(file) as src:
lines = src.readlines()
for l in [[l for l in lines if f in l][0] for f in set([l.split()[0] for l in lines])]:
print(l, end = "")