Python или утилита командной строки - сортировать и фильтровать файл?

1

Приведенные данные формы:

a b 1.1
c d 2.3
b a 1.1

Можно ли сортировать такой файл на основе разбитого столбца и удалять строки, где дублируется запись в третьем столбце, так что вывод будет:

a b 1.1
c d 2.3

или,

c d 2.3
b a 1.1

,

Я могу использовать только утилиты python, R или командной строки для выполнения этой задачи в наборе очень больших файлов.

Благодарю!

  • 1
    Как вы решаете, какую из строк "1.1" отбросить?
  • 0
    Неважно, что отбрасывается.
Теги:
command-line
text-processing

2 ответа

8
Лучший ответ

Unix- sort должна быть способна выполнить вашу работу:

cat file | sort -u -k3,3n
a b 1.1
c d 2.3
cat file | sort -u -k3,3rn
c d 2.3
a b 1.1
  • 0
    Как это поможет?
  • 4
    @Dominik: как это не помогает?
Показать ещё 6 комментариев
2
f = open('text.txt','rb')
filter = []
rows = []
for line in f:
    line = line.replace('\r\n','')
    data = line.split(' ')
    if len(data) >= 3:
        if not data[2] in filter:
            filter.append(data[2])
            rows.append(data)
f.close()

f = open('output.txt','wb')
for row in rows:
    f.write(row[0] + ' ' + row[1] + ' ' + row[2] + '\r\n')
f.close()
Сообщество Overcoder
Наверх
Меню