Как отсортировать по 2 столбцам и сохранить верхнюю строку из каждой группы?

У меня есть два файла csv следующего формата:

column1,column2,user,column4,column5,column...column14 

Я хотел бы отсортировать файлы на основе пользователя в качестве первого ключа, а затем на основе столбца14 в порядке убывания, который представляет собой число, представляющее временную метку.

Результат будет таким:

file1:

 A,AA,jim,XX,YY,....,1485771395 A,AA,jim,XX,YY,....,1485771395 

и т.д

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

 A,AA,jim,XX,YY,....,1485771395 

Как я могу это сделать?

Обновить:
Пример ввода:

 "1/30/2017 11:14:55 AM",Valid customer,jim.smith,NY,1485771295 "1/26/2017 5:06:11 AM",New customer,john.doe,CA,1485403571 "1/26/2017 8:02:01 PM",Valid customer,jim.smith,NY,1485457321 "1/30/2017 4:14:30 AM",New customer,tim.jones,CO,1485746070 "1/30/2017 11:09:36 AM",New customer,tim.jones,CO,1485770976 "1/30/2017 11:14:50 AM",Valid customer,jim.smith,NY,1485771290 "1/22/2017 11:51:51 AM",New customer,tim.jones,CO,1485082311 

Последний столбец – это эпоха первого столбца, позволяющая сортировать строки, используя число, а не строку.
Таким образом, ожидаемый результат будет:
a) Сортировка по имени и по метке в обратном порядке, чтобы мы получили:

 "1/30/2017 11:14:55 AM",Valid customer,jim.smith,NY,1485771295 "1/30/2017 11:14:50 AM",Valid customer,jim.smith,NY,1485771290 "1/26/2017 8:02:01 PM",Valid customer,jim.smith,NY,1485457321 "1/26/2017 5:06:11 AM",New customer,john.doe,CA,1485403571 "1/30/2017 11:09:36 AM",New customer,tim.jones,CO,1485770976 "1/30/2017 4:14:30 AM",New customer,tim.jones,CO,1485746070 "1/22/2017 11:51:51 AM",New customer,tim.jones,CO,1485082311 

Таким образом, у нас есть кластер строк для jim.smith другой для tim.jones отсортированный по последнему столбцу в обратном порядке (т.е. последняя дата первой строки является первой в кластере) и строка для john.doe которая имеет только 1 запись.

Тогда я хотел бы сохранить только первую строку каждого кластера. Т.е.

 "1/30/2017 11:14:55 AM",Valid customer,jim.smith,NY,1485771295 "1/26/2017 5:06:11 AM",New customer,john.doe,CA,1485403571 "1/30/2017 11:09:36 AM",New customer,tim.jones,CO,1485770976 

  • линии с уникальной контрольной суммой
  • сортировать данные ls пользователями
  • Помогите мне понять, что здесь делает
  • Как сделать обратный вывод, который уже передан из команд сортировки и вырезания
  • Как обрабатывать цикл while-do и сортировать результат с итерацией
  • Добавить слова в список слов с помощью sort -u avoinding duplicata
  • Порядок сортировки для заказа этого списка в определенном порядке
  • Сортировка «последнего» результата по месяцам
  • 2 Solutions collect form web for “Как отсортировать по 2 столбцам и сохранить верхнюю строку из каждой группы?”

    Данный input файла как

     "1/30/2017 11:14:55 AM",Valid customer,jim.smith,NY,1485771295 "1/26/2017 5:06:11 AM",New customer,john.doe,CA,1485403571 "1/26/2017 8:02:01 PM",Valid customer,jim.smith,NY,1485457321 "1/30/2017 4:14:30 AM",New customer,tim.jones,CO,1485746070 "1/30/2017 11:09:36 AM",New customer,tim.jones,CO,1485770976 "1/30/2017 11:14:50 AM",Valid customer,jim.smith,NY,1485771290 "1/22/2017 11:51:51 AM",New customer,tim.jones,CO,1485082311 

    тогда

     sort -t, -k3,3 -k5,5rn input | awk -F, '!seen[$3]++' "1/30/2017 11:14:55 AM",Valid customer,jim.smith,NY,1485771295 "1/26/2017 5:06:11 AM",New customer,john.doe,CA,1485403571 "1/30/2017 11:09:36 AM",New customer,tim.jones,CO,1485770976 

    С gnu datamash :

     datamash -t, -s -f -g 3 max 5 <infile 

    но обратите внимание, что перед запуском необходимо удалить все завершающие пробелы из каждой строки на вашем входе.
    Только с awk , используя два массива:

     awk -F, '!z[$3]{x[$3]=$0;z[$3]=$5;next}$5>z[$3]{x[$3]=$0} END{for (i in z){print x[i]}}' infile 
    Interesting Posts

    SCP без запроса пароля с использованием другого имени пользователя

    Интерфейс моста через виртуальные машины, чтобы обеспечить доступ к Интернету LAN

    Gawk: передача массивов в функции

    Как настроить тысячи VLAN на сервере ISC DHCP-4.1.1-P1?

    Сделать Nginx следовать символическим ссылкам

    Обновление ядра Linux сломало мой компьютер

    apt-get update возвращает ошибку 404 из-за iceweasel

    Запустите LFTP в списке файлов

    groovy (мыло) для запуска нескольких команд оболочки (unix)

    Как свести к минимуму использование сглаженных шрифтов во всех средах и приложениях для рабочего стола?

    Как создать папку, которая изменит его содержимое на то, что имеет папка?

    Внешний привод USB не работает

    Хороший побег для ssh

    Xfce 4.12: Как настроить диалоговое окно переключателя окон (Alt-Tab) для использования режима списка?

    Настройка постоянного моста для динамических сетевых устройств из контейнера lxc?

    Linux и Unix - лучшая ОС в мире.